Rails 3路由不为新的vs编辑视图生成正确的路径

时间:2011-12-30 07:52:43

标签: ruby-on-rails namespaces routes

我得到了一些让我与Rails 3完全混淆的功能。我似乎无法使用支架的(大部分)标准_form风格来生成正确的路径。

首先,我正在“admin”命名空间中执行所有操作。如果我在创建新团队时使用admin_team_path(@team)生成路径,但是在编辑时提交表单,我发现表单部分抛出路由错误,除非我使用admin_teams_path,否则会抛出错误。

admin_team_path(@team)其中@team = Team.new抛出此错误:

没有路线匹配{:controller =>“admin / teams”,:action =>“show”,:id =>#}

...同时 admin_teams_path(@team)其中@team =抛出此错误:

无法找到TeamsController

的操作'edit'

在后一种情况下,它似乎指向URL:http://localhost:3000/teams/1/edit - 它无法正确识别命名空间。

这是我的完整_form.html:

<%= semantic_form_for(@team, :url => admin_teams_path(@team)) do |f| %>
  <%= f.semantic_errors %>

  <%= f.inputs do %>
    <%= f.input :user_id %>
    <%= f.input :league_id %>
    <%= f.input :name %>
  <% end %>

  <%= f.buttons do %>
   <%= f.commit_button :button_html =>{:class => "primary"} %>
  <% end %>
<% end %>

是什么给出的?什么是创建此表单部分的正确方法,以便它适用于新操作和编辑操作?

命名空间似乎很难处理。

1 个答案:

答案 0 :(得分:1)

假设您已经以RESOURCEful方式定义了路由,如下所示:

namespace :admin do
    resources :teams
end

然后,在你的_form partial中,你可以让rails像这样处理动作:

<%= semantic_form_for(["admin", @team]) do |f| %>
    .... #rest of the code
<% end %>