【问题标题】:How can I use proper reference for a path如何使用正确的路径参考
【发布时间】:2017-01-27 19:30:27
【问题描述】:

我有 3 个模型。 Projects 有很多 Orderlines,Orderlines 有很多 Package。我有一个使用 project_orderline 作为 Show 方法的视图,其中我将所有包呈现为部分。它工作正常,但是当我添加一个新包时,我想在创建操作中重定向(实际上重定向回)相同的视图。

  class PackagesController < ApplicationController
  before_action :set_package, only: [:show, :edit, :update, :destroy]

  def create
    project = Project.find(params[:project_id])
    orderline = project.orderlines.find(params[:orderline_id])
    @package = orderline.packages.new(package_params)

      if @package.save
        flash[:success] = "Package was successfully created."
        redirect_to project_orderline_path(orderline)
      else
        render 'new'
      end
  end

但我有以下错误:

ActionController::UrlGenerationError in PackagesController#create

我应该如何解决这个问题?

PS.:所以,这里是文本格式的错误消息:

PackagesController#create 中的 ActionController::UrlGenerationError 没有路线匹配 {:action=>"show", :controller=>"orderlines", :id=>nil, :orderline_id=>"18", :project_id=>#, origin: "123", project_id: 48, created_at:“2017-01-27 18:36:59”,updated_at:“2017-01-27 18:36:59”,小计:#>} 缺少必需的键:[:id]

路线:

resources :projects do
  resources :orderlines do
     resources :packages
   end
end

【问题讨论】:

  • 请编辑您的问题以包含错误消息的全文。这样会更容易回答,也会让有相同问题的其他人更容易找到这个问题。

标签: ruby-on-rails ruby view model controller


【解决方案1】:

我不知道为什么你的project_orderline_path(orderline) 不起作用,但既然你想回去,你可以这样做:

redirect_to :back

也许您可以将路线和错误作为问题中的文本而不是屏幕截图发布。

【讨论】:

  • 正确,实际上我想回去谢谢,使用 :back 效果很好。但是,我想了解为什么以原始方式不能。请在帖子中查看我的路线,我刚刚编辑过。
猜你喜欢
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
相关资源
最近更新 更多