当路由被命名空间时,如何处理form_for
?我得到一些奇怪的路线错误,我真的希望得到。
例如,假设您有一个名为Admin::CompaniesController
的控制器
您的routes.rb中的:admin
命名空间:
namespace :admin do
resources :companies
end
大多数工作都很好,但是在渲染新表单时出现错误。这是代码:
<%= simple_form_for(@company, :url => admin_company_path(@company)) do |f| %>
这是错误信息:
ActionView::Template::Error: No route matches {:action=>"show", :controller=>"admin/companies", :id=>#<Company id: nil, name: nil, phone_number: nil, address: nil, postal_code: nil, is_enabled: true, courses_created: 0, province_id: nil, theme_id: nil, payment_plan_id: nil, created_at: nil, updated_at: nil>}
我怎样才能让铁杆在这里玩得很好?我显然想要一个用于编辑的URL,另一个用于新表单。通常,我甚至不必将:url
放在我的form_for
语句中,但由于嵌套,我被迫。
我现在不知道该怎么做,至少不是很优雅。
答案 0 :(得分:24)
尝试使用simple_form_for([:admin, @company]) do |f|
答案 1 :(得分:0)
我相信我只需要在路径末尾复制路径,就像这样:
<%= simple_form_for(@company, :url => admin_companies_path(@company)) do |f| %>
这不是我所期望的。我猜对了。这不是一个有效的路线或任何东西,但似乎适用于看跌期权和帖子。