我想更深入地了解 Rails 3 路由 - 以解决我遇到的问题。我正在尝试使用数据网格 gem。我有这个:
class UsersController < ApplicationController
def index
@admin_console = AdminConsole.new(params[:admin_console])
...
然后在用户的索引.html.erb中:
<%= form_for @admin_console, :html => {:method => :get} do |f| -%>
<% @admin_console.filters.each do |filter| -%>
...
我收到一个错误,指出"admin_consoles_path"是一个未定义的方法。
在路线上,我只有这个:
resources :users
我没有管理控制台控制器;我只有一个模型。我想了解为什么我需要在路由中使用管理控制台(如果我这样做)。
form_for帮助程序正在查找admin_consoles_path,因为您使用的是帮助程序的缩短版本。
这,特别是第2.3节,解释了使用form_for时实际发生的情况
## Creating a new article
# long-style:
form_for(@article, :url => articles_path)
# same thing, short-style (record identification gets used):
form_for(@article)
我相信您需要一个控制器操作来创建 AdminConsole,但如果您按照上面的示例指定 url,它不一定需要它自己的控制器(尽管这可能不是最佳实践)。