【问题标题】:Predefined routes doesn't work, why?预定义的路线不起作用,为什么?
【发布时间】:2013-02-10 20:21:35
【问题描述】:

我即将实现编辑项目的功能,但我无法获得工作路线。

routes.rb:

Ampta::Application.routes.draw do
  get "home/index"

  resources :projects
  resources :tickets
  resources :projects_users
  resources :users

  ...
end

链接到路径的视图:

...
<%= link_to "Show tickets", tickets_path%><br/>
<%= link_to "Manage projects", edit_project_path %><br/> // <--- The link
<%= link_to "Log out", signout_path, method: "delete"%>
...

(我已经在项目控制器中定义了“编辑”动作,但它还没有包含任何代码。)

运行 rake 路由时,路由就在那里,为什么我会收到以下错误,说明情况并非如此:

No route matches {:action=>"edit", :controller=>"projects"}

【问题讨论】:

  • 将项目 id/对象传递给 edit_project_path 方法,如 &lt;%= link_to "Manage projects", edit_project_path(:id) %&gt;&lt;%= link_to "Manage projects", edit_project_path(@project) %&gt;(如果定义了 @project)。

标签: ruby-on-rails ruby-on-rails-3 controller routes


【解决方案1】:

edit_project_path 不知道您要编辑哪个项目。该路由助手将采用Project 实例,然后将其路由到/projects/1/edit。也许您打算使用projects_path

projects_path 方法将转到 ProjectsController's index 操作,在该操作中(通常)提供项目列表以及在该页面上编辑它们的链接。

【讨论】:

    【解决方案2】:

    您需要传入正在编辑的项目的记录。 在你的 show.html.erb 中,你最好有类似的东西;

    <%= link_to "Manage project", edit_project_path(@project) %>
    

    在你的控制器中

    def show
      Product.find(params[:id])
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2015-04-23
      • 2019-12-04
      • 2015-05-20
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多