【问题标题】:Can't find name of parent model even when inside of nested route?即使在嵌套路线内也找不到父模型的名称?
【发布时间】:2012-06-28 22:33:22
【问题描述】:

我正在通过我的嵌套表单创建一个孩子,我知道这些路线有效,因为我在上面。

resources :surveys do
  resources :questions
end

我也选择了第一个调查来添加问题,然后我想在页面上显示调查的名称:

class QuestionsController < ApplicationController

  def new
    @Survey = Survey.find(params[:id])
    @question = Question.new
  end
end

http://localhost:3000/surveys/1/questions/new

<div><%= @survey.name %></div> # show this

<div>
 <%= simple_form_for(@question do |f| %>
  <%= f.button :submit, "Done" %>
 <% end %>
</div>

这给了我错误:

ActiveRecord::RecordNotFound in SurveysController#new

Couldn't find Survey without an ID

app/controllers/questions_controller.rb:7:in `new'

{"survey_id"=>"1"}

为什么?这是怎么回事?

【问题讨论】:

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


    【解决方案1】:

    正是错误告诉您的内容。如果你想通过 id 找到“父”模型,你需要使用*parent*_id,所以在这种情况下应该是:

    @Survey = Survey.find(params[:survey_id])
    

    id 参数是为 current 控制器保留的,在这种情况下是指 question 的 id,而不是 survey.

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多