0

我正在尝试将部分从我的 App/view/pins 文件夹渲染到我的 app/view/layout 文件夹(我的菜单)。

基本上,我正在尝试将我的 _form.html.erb 呈现为通过菜单上的按钮触发的模态。

我正在使用引导程序。

每次我给我的模态代码:

<%= render 'pins/form' %>

我越来越:

NoMethodError in Pins#index
undefined method `model_name' for NilClass:Class

我搜索了很多地方,但无法修复它.. 有人可以帮助我吗?

(Git 回购-> https://github.com/Theminijohn/Amphitryon

错误: 错误跟踪 -> http://i.imgur.com/i4aVQNd.png

4

4 回答 4

2

尝试使用这个:

<%= render :partial => 'pins/form' %>

编辑

我看了你的代码。在您的引脚/表单部分中,您指的是@pin实例变量,该变量在您的部分中可能不可用。这就是为什么您的堆栈跟踪指的是NilClass.

我认为您可以尝试通过@pin以下方式之一作为局部部分变量传递:

<%= render :partial => 'pins/form', :locals => { :pin => @pin } %>

或(简写语法)

<%= render "pins/form", :pin => @pin %>
于 2013-07-15T21:39:43.860 回答
1

速记render @pins是这样做的:

render :partial => 'pin', :collection => @pins

从而每个引脚都作为局部变量传递。

但是,您的部分引用实例变量 @pin,除非在控制器中明确分配,否则将返回nil

<%= simple_form_for(@pin, #...snipped...

将其更改为局部变量,如下所示:

<%= simple_form_for(pin, #...snipped...
于 2013-07-15T22:15:18.987 回答
1

尝试@pins在简单的表单定义中替换为current_user.pins.new

于 2013-07-15T22:46:22.133 回答
0

我如何修复它 感谢您的所有帮助,如果没有你们,我将无法弄清楚。

1.) 我将表格从@pin 更改为

current_user.pins.new

2.) 比,因为模态在没有用户登录的情况下被渲染,这导致了一个错误,我将模态包装在一个 if 语句中

<% if user_signed_in? %>
...form code...
<% end %>

一切都很完美。

于 2013-07-15T23:33:50.680 回答