使用命名空间路由时路由错误

时间:2011-05-28 02:15:53

标签: ruby-on-rails ruby routing namespaces controller

当路由被命名空间时,如何处理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语句中,但由于嵌套,我被迫。

我现在不知道该怎么做,至少不是很优雅。

2 个答案:

答案 0 :(得分:24)

尝试使用simple_form_for([:admin, @company]) do |f|

答案 1 :(得分:0)

我相信我只需要在路径末尾复制路径,就像这样:

<%= simple_form_for(@company, :url => admin_companies_path(@company)) do |f| %>

这不是我所期望的。我猜对了。这不是一个有效的路线或任何东西,但似乎适用于看跌期权和帖子。