【发布时间】:2011-11-18 23:06:02
【问题描述】:
我刚开始使用 Ruby on Rails,遇到了从特定视图链接到控制器中的另一个操作的问题。我几乎可以肯定这是我的routes.rb 文件中的一个问题(或缺少代码),但我认为我误解了这个文件的工作原理以及我必须做什么。我有一个解决方案,但很确定这不是“最好的方法”。
我有一个名为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
谢谢,
杰克
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3.1