Ruby on rails 用于nil:NilClass的Rails未定义方法*
我有一个问题,我做了一些研究,从我的研究中,我发现正在使用的变量是空的,但是我不确定为什么它是空的,也许这对其他人来说是显而易见的 我试图在另一个控制器的页面上显示嵌套表单,我使用了嵌套资源,我认为这可能是我的问题,但不确定如何解决它 获取以下错误:Ruby on rails 用于nil:NilClass的Rails未定义方法*,ruby-on-rails,ruby,forms,Ruby On Rails,Ruby,Forms,我有一个问题,我做了一些研究,从我的研究中,我发现正在使用的变量是空的,但是我不确定为什么它是空的,也许这对其他人来说是显而易见的 我试图在另一个控制器的页面上显示嵌套表单,我使用了嵌套资源,我认为这可能是我的问题,但不确定如何解决它 获取以下错误: undefined method `submission' for nil:NilClass class Submission < ActiveRecord::Base belongs_to :question belong
undefined method `submission' for nil:NilClass
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
namespace :members do
resources :questions, only: [:index,:show] do
resources :submissions
end
end
项目结构
主文件夹
-成员
--问题
--意见书
概念:
undefined method `submission' for nil:NilClass
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
namespace :members do
resources :questions, only: [:index,:show] do
resources :submissions
end
end
问题-你有很多意见书吗
提交-属于-问题
提交模式:
undefined method `submission' for nil:NilClass
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
namespace :members do
resources :questions, only: [:index,:show] do
resources :submissions
end
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 %>
有人知道我哪里出错了吗
非常感谢您的帮助。我已经解决了这个问题,谢谢您的建议,我使用了错误的变量,我使用了@question,因为它是嵌套的,正确的变量是@members\u question 提交控制器
def create
@members_question = Members::Question.find(params[:question_id])
@submission = @members_question.submissions.create(params[:submission].permit(:content, :question_id))
@submission.member_id = current_member.id
end
\u form.html.erb
<%= form_for([@members_question, @members_question.submissions.build]) do |f| %>
<div class="field">
<%= f.label :content %><br>
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
您的控制器是否在此处返回对象@question=Members::question.find(参数[:question\u id])
。。做一个@questions。在那一行之后检查,发现视图中有打字错误@question.submission.build
应该是@questions.submissions.build
@MikDiet我两个都试过了,都不起作用。@sa77我试过,但在网站或终端上看不到任何输出,我希望在哪里看到输出?@user7391609在哪一行抛出错误?变量的名称完全不相关,它只需在控制器和表单中匹配即可。