2013-04-25 39 views
0

我想让用户喜欢的帖子,然后显示他们通过AJAX的交互,但它不工作。AJAX Fave按钮不工作导轨

我得到在控制台的错误是:

ActionView::Template::Error (undefined local variable or method `post_item' for #<#<Class:0x007fecb2a3d5f8>:0x007fecb2a357e0>): 

按钮正在通过的部分呈现:

<%= render "shared/fave_form", post_item: post_item %> 

下面是按钮的代码(共享/ _fave_form.html .erb):

<% if current_user.voted_on?(Post.find(post_item)) %> 
    <%= link_to "unlike", vote_against_post_path(post_item.id), :remote => true, :method => :post, :class => "btn") %> 
<% else %> 
    <%= link_to "like", vote_up_post_path(post_item.id), :remote => true, :method => :post, :class => "btn") %> 
<% end %> 

这里的toggle.js.erb文件:

$("#fave").html("<%= escape_javascript render('fave_form') %>"); 

回答

0

使用本地变量,所以通过post_item作为本地的部分:

<%= render :partial => "shared/fave_form", :locals => {post_item: post_item} %> 
+0

仍然得到同样的结果。 – 2013-04-25 05:14:47

1

渲染时使用toggle.js.erb它没有得到localspost_item的部分,你必须提供它也。所以,你的js代码应该像下面

$("#fave").html("<%= escape_javascript(render :partial=>"fave_form", locals: {post_item: post_item}).html_safe %>); 

东西,我猜你使用的是一些Ajax调用,然后你toggle.js.erb所以在你的toggle您必须指定值为post_item的值,让它为实例变量@post_item,以便我们可以在toggle.js.erb中使用它。

$("#fave").html("<%= escape_javascript(render :partial=>"fave_form", locals: {post_item: @post_item}).html_safe %>); 
+0

我仍然在控制台中收到相同的错误?我用你的代码,它产生了同样的事情。 – 2013-04-25 06:30:37

+0

+1得到很好的回答 – 2013-04-25 08:26:18

+0

出于某种原因,它仍然不能正常工作?也许这是在控制器中的东西? – 2013-04-25 16:08:10