2013-04-25 75 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