我刚开始玩弄Ruby on Rails,并遇到了从特定视图链接到控制器中的另一个操作的问题。我几乎肯定这是我的routes.rb
文件中的一个问题(或缺少代码),但我认为我误解了这个文件的工作原理&我必须做什么。我有一个解决方案,但很确定这不是实现它的“最佳方式”。使用Ruby on Rails link_to链接到控制器动作
我有一个控制器叫home
有两个动作,index
(这是默认值)和newbill
。里面index.html.erb
我:
<h1>Home View</h1>
<%= link_to "new", :controller => "home", :action => "newbill" %>
但是我得到一个路由错误:
No route matches {:controller=>"home", :action=>"newbill"}
做rake routes
给了我下面的:
root/{:controller=>"home", :action=>"index"}
然后我(以下一些谷歌搜索)加入该代码到routes.rb
match 'home/newbill' => 'home#newbill', :as => :newbill
然后在我的index.html.erb
我有这样的:
<%= link_to "Name", newbill_path %>
现在这个按预期工作。我的问题是:
- 这是为什么这样工作?幕后究竟发生了什么?
- 这当然不是最好的办法吗?为我想链接的每个控制器/操作添加另一个
match 'home/newbill'...
似乎是一种垃圾处理方式。
我真的很喜欢Ruby,但是在Rails的这个方面挣扎了一点......一般的路由选择让我的脑子有点乱了,我想!
任何帮助是非常赞赏:d
感谢,
杰克
我们知道那里有文档。 -1如果我可以,因为这不能提供任何真正的帮助。 – karns
@ karns这个人的问题是“为什么在规定的时尚工作中使用路由引擎?”。我可以费力地输出真正的答案(这已经在Rails路由指南中完成了),或者直接指向他们。他想了解路由的工作原理,并且有一份清晰的官方文档详细解释了它。我没有看到问题? –