【问题标题】:Rails 3 routing not generating proper paths for new vs edit viewsRails 3 路由没有为新视图和编辑视图生成正确的路径
【发布时间】:2012-01-30 10:22:24
【问题描述】:

我得到了一些让我对 Rails 3 完全感到困惑的时髦。我似乎无法使用脚手架的(主要)标准 _form 样式来生成正确路径的路由。

首先,我在“管理员”命名空间内做所有事情。我发现如果我在创建新团队时使用 admin_team_path(@team) 生成路径,那么表单部分会引发路由错误,但是在编辑时提交表单,除非我使用 admin_teams_path,否则它会引发错误。

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

没有路由匹配 {:controller=>"admin/teams", :action=>"show", :id=>#}

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

找不到 TeamsController 的“编辑”操作

在后一种情况下,它似乎指向 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 %>

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

命名空间似乎很乱。

【问题讨论】:

  • 您的路线是如何定义的? sth like this namespace :admin do resources :teams end ?

标签: ruby-on-rails namespaces routes


【解决方案1】:

假设您已经以资源丰富的方式定义了您的路线,如下所示:

namespace :admin do
    resources :teams
end

然后,在您的 _form 部分中,您可以让 rails 像这样处理操作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多