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

Posted

技术标签:

【中文标题】Rails - 在控制器中路由动作的正确方法【英文标题】:Rails - Proper way to route an action in a controller 【发布时间】:2011-06-05 09:20:06 【问题描述】:

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

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

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

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

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

home 路径只是路由到 user#index 视图

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

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

但我收到错误“没有路由匹配 :controller=>"user/user", :action=>"yes", :id=>1"

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

【问题讨论】:

嗯,我看到 ':controller=>"user/user"',你有命名空间或范围一些路由吗? 【参考方案1】:
  match '/yes(/:id)' => 'user#yes'

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

【讨论】:

以上是关于Rails - 在控制器中路由动作的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

7--Rails路由

.netcore视图跳转无响应

Rails:自定义嵌套控制器动作

6--Rails架构中的资源2

ruby on rails 中的控制器和动作有啥区别?

在 RAILS 中将模型从一个控制器动作传递到另一个控制器动作的替代方法