我得到了一些让我与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 %>
是什么给出的?什么是创建此表单部分的正确方法,以便它适用于新操作和编辑操作?
命名空间似乎很难处理。
答案 0 :(得分:1)
假设您已经以RESOURCEful方式定义了路由,如下所示:
namespace :admin do
resources :teams
end
然后,在你的_form partial中,你可以让rails像这样处理动作:
<%= semantic_form_for(["admin", @team]) do |f| %>
.... #rest of the code
<% end %>