【问题标题】:Rails routing params mismatch error in railsRails 中的 Rails 路由参数不匹配错误
【发布时间】:2020-07-02 14:56:58
【问题描述】:

我正在添加 excel 导入功能,但出现错误。 :id params 正在被传递,而不是 :project_id params。

下面是我的代码-

index.html.erb

<%= form_tag import_project_stages_path ,multipart: true do %>
  <%= file_field_tag :file %>
  <%= submit_tag "Import" %>

<%end %>

stage_controller.rb

def import
    Stage.import(params[:file])
    redirect_to root_url, notice:"Projects imported. "
  end

routes.rb

resources :projects do
    resources :stages do
      collection {post :import}
    end
  end

错误

没有路由匹配 {:action=>"import", :controller=>"stages", :id=>"1"}, 缺少必需的键:[:project_id]

【问题讨论】:

  • 为什么你使用嵌套路由,因为你得到这个错误来解决这个问题,要么传递 project_id 要么制作没有项目范围的路由。您也可以通过 rake routes 进行检查

标签: ruby-on-rails ruby-on-rails-5


【解决方案1】:

您的嵌套资源将生成类似于&lt;host&gt;/projects/:project_id/stages 的路由路径。因此,您需要将父项目 ID 作为路径的一部分包含在您的 form_tag 中。您可以通过将项目作为参数包含在 URL 帮助方法中来做到这一点:

<%= form_tag import_project_stages_path(@project), multipart: true do %>
  ...
<%end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多