【发布时间】:2014-06-27 01:32:54
【问题描述】:
我正在创建一个简单的投票部分,但由于这个原因它没有更新:
错误
NameError - undefined local variable or method `scribble' for
app/views/scribbles/vote.js.erb:1:in `_app_views_scribbles_vote_js_erb
唯一的投票方法可以正常工作,但由于上述错误,它不会在视图中更新。我想我只需要知道如何将 scribble 对象传递给 vote.js.erb ???
_vote.html.erb
<%if current_user.voted_for?(scribble)%>
<a href="" id="vote_<%=scribble.id%>" name="promote" class="votes">
<div class="scribblevote">
<i class="fa fa-cloud-upload"></i>
<%=scribble.votes.count%> <%= link_to "demote", vote_scribble_path(:id => scribble.id, :vote => false), remote: true, method: :post%>
</div></a>
<%else%>
<a href="" id="vote_<%=scribble.id%>" name="promote" class="votes">
<div class="scribblevote">
<i class="fa fa-cloud-upload"></i>
<%=scribble.votes.count%> <%= link_to "promote", vote_scribble_path(:id => scribble.id, :vote => true), remote: true, method: :post%>
</div></a>
<%end%>
vote.js.erb
$("#vote_<%=scribble.id%>").html("<%= escape_javascript( render(:partial => "scribbles/vote") ) %>");
控制器方法
def vote
@scribble = Scribble.find(params[:scribble_id])
@vote = params[:vote]
if @vote == "true"
@v = :up
else
@v = :down
current_user.unvote_for(@scribble)
end
current_user.vote(@scribble, :direction => @v)
respond_to do |format|
format.js{}
end
scribble/_scribbles.html.erb
<% @scribbles.each do |scribble| %>
<%= render :partial=> "scribbles/vote", :locals => {scribble: scribble}%>
<%end%>
【问题讨论】:
标签: javascript ruby-on-rails ajax ruby-on-rails-3