Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用于nil:NilClass的Rails未定义方法*_Ruby On Rails_Ruby_Forms - Fatal编程技术网

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在哪一行抛出错误?变量的名称完全不相关,它只需在控制器和表单中匹配即可。