Ruby on rails Rails:未定义的方法`model_name';班级:班级

Ruby on rails Rails:未定义的方法`model_name';班级:班级,ruby-on-rails,modal-dialog,simple-form,Ruby On Rails,Modal Dialog,Simple Form,我刚刚做了一个railsgscaffold反馈:stringuser\u id:integer。当我转到0.0.0.0:3000/反馈/新建时,一切正常。但是当我尝试将反馈表单放入一个模态中时,我得到了以下错误:未定义NilClass:Class的方法“model\u name”。我用谷歌搜索了这个问题,但找不到有效的解决方案 有人知道解决这个问题的办法吗 反馈/_form.html.erb(我使用简单的表单) lelist.html.erb(我在其中呈现模态) 是我,但您的\u form.ht

我刚刚做了一个
railsgscaffold反馈:stringuser\u id:integer
。当我转到0.0.0.0:3000/反馈/新建时,一切正常。但是当我尝试将反馈表单放入一个模态中时,我得到了以下错误:
未定义NilClass:Class的方法“model\u name”
。我用谷歌搜索了这个问题,但找不到有效的解决方案

有人知道解决这个问题的办法吗

反馈/_form.html.erb(我使用简单的表单)

lelist.html.erb(我在其中呈现模态)


是我,但您的
\u form.html.erb
中有以下内容:

<%= simple_form_for(@feedback) do |f| %>

还可以查看ruby on rails指南部分

您必须在调用模态的控制器操作中定义@feedback。

控制器中呈现lelist视图的lelist操作应具有:

@feedback = Feedback.new
这就是为什么:

在创建表单之前,在本例中为“反馈”,您必须创建此模型的新实例:(
@Feedback=Feedback.new

表单是使用此实例的所有属性生成的

url路由到控制器上的操作,并从那里呈现视图。因此,使用模式呈现页面的操作应该始终创建模型的这个新实例

我希望这能让事情更清楚一点,这么简单的事情很难解释。最重要的是:


视图中使用的每个变量都必须在呈现该视图的操作中创建。

我想它在您的局部视图中找不到@feedback变量。 所以最好传递变量

<%= render 'form', :feedback => @feedback%>
@feedback%>
在您的反馈中/_form.html.erb

<%= simple_form_for(feedback) do |f| %>


在哪里渲染模态?可能无法从模式视图访问
@反馈
,因此它是
nil
form\u helper
尝试从
nil
类生成url,该类为
nilClass
,不具有
model\u name
属性。控制器中的
lelist
操作(呈现
lelist视图的
,是否有
@feedback=feedback.new
?是的!这是@Tim。我刚刚在操作中添加了'@feedback=feedback.new'。谢谢!将此作为答案发布,我会接受它:)(我对rails有点陌生,你能给我一个简短的解释或链接,我可以在哪里阅读我为什么要这么做?).其实很简单,我会把它添加到我的答案中!再次感谢你的解释!
<div class="lelist_body">
<div class="container" id="dk">
    <% if current_user %>
        <div class="row">
            <div class="span6 offset3" id="user_post_area_button">
                <a class="big_fat_feedback_button" href="#activate_feedback_modal" data-toggle="modal">feedback</a>
            </div>
        </div>
    <% end %>
    <%= render 'pages/singlePost' %>
</div>
<div class="row">
    <div class="span6 offset3">
        <%= will_paginate @posts %>
    </div>
</div>
</div>

<%= render "feedbacks/feedback_modal" %>
<%= simple_form_for(@feedback) do |f| %>
<%= render :partial => "form", :locals => { :feedbacks=> @feedbacks} %>
@feedback = Feedback.new
<%= render 'form', :feedback => @feedback%>
<%= simple_form_for(feedback) do |f| %>