Rails - 在控制器中路由动作的正确方法

时间:2011-01-07 16:25:35

标签: ruby-on-rails routing

我正在尝试创建一个按钮,在单击时从我的控制器执行某些操作,但是我遇到了一些路由错误。

视图中的按钮看起来像......

  <%= button_to "Thumbs Up", {:controller => 'user', :action => "yes", :id => event.id}  %>

视图是我的用户控制器的索引页面。在用户控制器中,我有一个名为“是”的操作,它根据选择哪个事件(索引页面上显示的模型)项对记录进行更改。所以控制器中的控制器动作看起来像....

def yes
  @user = User.find(current_user)
  @event = Event.find(params[:id])
 ........ Blah Blah Blah .....
  redirect_to home_path
end

主路径只是路由到用户#index视图

所以对于我的路线是......

  match '/yes' => 'user#yes'.

但我收到错误“No route matches {:controller =&gt;”user / user“,:action =&gt;”yes“,:id =&gt; 1}”

那么如何创建一个按钮和路径,转到我控制器中的特定动作并传递id作为参数,以便动作可以发挥其魔力并重定向到同一页面?

1 个答案:

答案 0 :(得分:1)

  match '/yes(/:id)' => 'user#yes'

括号使params可选,请参阅http://edgeguides.rubyonrails.org/routing.html