ruby-on-rails - Rails 3 路由没有为新 View 和编辑 View 生成正确的路径

标签 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 的“编辑”操作

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

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

命名空间似乎一团糟。

最佳答案

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

namespace :admin do
    resources :teams
end

然后,在您的 _form 部分中,您可以让 rails 处理这样的操作:
<%= semantic_form_for(["admin", @team]) do |f| %>
    .... #rest of the code
<% end %>

关于ruby-on-rails - Rails 3 路由没有为新 View 和编辑 View 生成正确的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677360/

相关文章:

ruby-on-rails - 在 Rails 3.1 中,我如何检查模型的 has_many 关联的任何实例是否已更改?

c++ - 在命名空间中包含实现文件以避免名称冲突

c++ - 为什么我的日志在 std 命名空间中?

php - 登录和注销后丢失当前本地语言

ruby-on-rails - Ruby On Rails I18n-错误的本地化。full_messages可在一个服务器上运行,但不能在另一台服务器上运行

ruby-on-rails - ElasticSearch-传递术语数组进行过滤

javascript - 检测客户端与服务器端路由

javascript - AngularJS - 路线 - 如何匹配星号(*)作为路径

ruby-on-rails - Ruby On Rails 功能测试 :index with a polymorphic model

c# - (约定)C# 类名