我遇到了問題,我已經做了一些研究,從我的研究中我發現正在使用的變量是空的,但我不確定它爲什麼是空的,也許這對其他人來說顯而易見?Rails未定義的方法*爲零:NilClass
我想顯示從另一個控制器的頁面上嵌套的窗體,我使用嵌套的資源,我認爲這可能是我的問題,但不確定如何解決它。
收到以下錯誤:
undefined method `submission' for nil:NilClass
項目 主文件夾 - 成員 --Questions --Submissions
概念的結構:
問題 - 的has_many - 提交 提交 - belongs_to的 - 問題
提交型號:
class Submission < ActiveRecord::Base
belongs_to :question
belongs_to :member
end
問題型號:
class Members::Question < ActiveRecord::Base
has_many :submissions
end
提交控制器:
def create
@question = Members::Question.find(params[:question_id])
@submission.member_id = current_member.id
@submission = @question.submissions.create(params[:submission].permit(:content, :question_id))
*Redirect Method Here *
end
在表單我使用下面的方法:
<%= form_for([@question, @question.submission.build]) do |f| %>
<% if @submission.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@submission.errors.count, "error") %> prohibited this submission from being saved:</h2>
<ul>
<% @submission.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :content %><br>
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
然後顯示問題的顯示頁面的表單中,我使用
<%= render 'members/submissions/form' %>
路線:
namespace :members do
resources :questions, only: [:index,:show] do
resources :submissions
end
end
任何一個任何想法,我哪裏會出錯?
任何幫助表示讚賞。
是你的控制器返回這裏的對象? '@question = Members :: Question.find(params [:question_id])'..在那行後面做一個'@ question.inspect'來找出 – sa77
你在視圖中有錯字'@ question.submission.build' should是'@ question.submissions.build' – MikDiet
@MikDiet我已經嘗試了兩種,都沒有工作。 – user7391609