从另一个文件夹渲染部分

时间:2013-07-15 21:07:53

标签: ruby-on-rails twitter-bootstrap render partial-views

我正在尝试将我的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

4 个答案:

答案 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 %>

一切都很完美。