我正在尝试将我的App / view / pins文件夹中的Partial渲染到我的 app / view / layout文件夹(我的菜单)。
基本上我正在尝试将_form.html.erb渲染为模态,这是 通过菜单上的按钮触发。
我正在使用Bootstrap。
每次我给我的模态代码:
<%= render 'pins/form' %>
我得到了:
NoMethodError in Pins#index
undefined method `model_name' for NilClass:Class
我搜索了很多,但无法修复它。 有人可以帮助我吗?
(Git repo-&gt; https://github.com/Theminijohn/Amphitryon)
错误: 错误跟踪 - &gt; http://i.imgur.com/i4aVQNd.png
答案 0 :(得分:2)
尝试使用:
<%= render :partial => 'pins/form' %>
修改强>
我看了你的代码。在你的pin / form partial中,你指的是@pin
实例变量,这可能在你的部分中不可用。这就是你的堆栈跟踪引用NilClass
。
我认为您可以尝试以下列方式之一将@pin
作为本地部分变量传递:
<%= render :partial => 'pins/form', :locals => { :pin => @pin } %>
或(简写语法)
<%= render "pins/form", :pin => @pin %>
答案 1 :(得分:1)
简写render @pins
正在执行此操作:
render :partial => 'pin', :collection => @pins
其中每个引脚作为局部变量传递。
但是,您部分引用实例变量 @pin
,除非在控制器中明确指定,否则将返回 nil :
<%= simple_form_for(@pin, #...snipped...
将其更改为本地变量,如下所示:
<%= simple_form_for(pin, #...snipped...
答案 2 :(得分:1)
尝试使用@pins
current_user.pins.new
答案 3 :(得分:0)
我如何修复 谢谢你所有的帮助,没有你们,我不会想到它。
1。)我将表格从@pin更改为
current_user.pins.new
2。)比,因为在没有用户登录的情况下渲染模态并且导致错误我将模态包装在if语句中
<% if user_signed_in? %>
...form code...
<% end %>
一切都很完美。