Rails 4按钮动作

时间:2015-12-23 16:47:08

标签: ruby-on-rails ruby

我正在创建一个按钮,该按钮将从用户向该文章的所有者发送100分。现在,我编写了以下代码,但Rails说:

  

文章中的ActionController :: UrlGenerationError#show |没有路线匹配{:action =>" upvote",:controller =>"预算",:id => 7}

可能出现什么问题?

控制器:

 class BudgetsController < ApplicationController
    def upvote
        @article = Article.find(params[:id])
        if @article.budgets.exists?(user_id: current_user.id)
            @article.budgets.create
            @article.budgets.user_id = current_user.id
            @article.budgets.user_gill = 1000
        end

        @budget = @article.budgets.find(user_id: current_user.id)

    end
end

HTML:

&#13;
&#13;
<div class = "row">
	<div class = "col-md-1">
		<%= button_to "+", {:action => "upvote", :controller => "budgets",  :id => @article.id }%>
	</div>
</div>
&#13;
&#13;
&#13;

型号:

class Article < ActiveRecord::Base
    belongs_to :user
    has_many :comments
    has_and_belongs_to_many :budgets
end


class Budget < ActiveRecord::Base
    belongs_to :user
    has_and_belongs_to_many :articles
end

class User < ActiveRecord::Base
    has_many :articles
    has_many :comments
    has_one :budget
end

路线:

 resources :articles do
    resources :comments
    resources :budgets
  end
  resources :users do
    resources :budgets
  end

1 个答案:

答案 0 :(得分:3)

using UnityEngine;
using System.Collections;

public class TESTspawner : MonoBehaviour {

    //PUBLIC VARIABLES
    public GameObject Enemy;
    public int NumberOfEnemies;
    public int NumberOfWaves;
    public int TimeBetweenSpawns;
    public int TimeBetweenWaves;
    public Transform SpawnPoint;
    //PRIVATE VARIABLES
    private int EnemyCount = 0;
    private int WaveCount = 0;

    //Wait Co-routine
    IEnumerator Wait(int x){
        Debug.Log ("Wait Time start: " + Time.time);
        yield return new WaitForSeconds(x);
        Debug.Log ("Wait Time end: " + Time.time);
    }

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if(WaveCount < NumberOfWaves){
            if(EnemyCount < NumberOfEnemies){
                Instantiate(Enemy, SpawnPoint.position, Quaternion.identity);
                EnemyCount++;
                StartCoroutine(Wait(TimeBetweenSpawns));
            }else{
                StartCoroutine(Wait (TimeBetweenWaves));
                WaveCount++;
            }
        }
    }
}

Rails Guide routing from the outside in