我正在创建一个简单的投票部分,但它没有更新,因为:
误差
NameError - undefined local variable or method `scribble' for
app/views/scribbles/vote.js.erb:1:in `_app_views_scribbles_vote_js_erb唯一的投票方法工作没有任何问题,但它只是没有更新在视图中,因为上面的错误。我想我只需要知道如何将拼写对象传递到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{}
endscribble/_scribbles.html.erb
<% @scribbles.each do |scribble| %>
<%= render :partial=> "scribbles/vote", :locals => {scribble: scribble}%>
<%end%>发布于 2014-06-27 01:38:55
$("#vote_<%=scribble.id%>")vs
$("#vote_<%=@scribble.id%>")您已经设置了@scribble,而不是名为scribble的本地变量
@scribble和scribble不是一回事。
如果你从来不给一个叫做scribble的东西赋值,那么它就不存在.如果你想在任何地方使用..。然后它就会爆炸,告诉你它不存在。
除非故意设置一个名为@scribble的局部变量,否则需要在任何地方使用scribble。
例:
<%= render :partial=> "scribbles/vote", :locals => {scribble: @scribble}%>请注意。在这段代码中,您将使用名为@scribble的变量,并设置aup一个局部变量(称为scribble),以供部分用户使用。
这个部分现在可以访问scribble了
发布于 2014-06-27 01:41:28
您可以将一个本地部分传递给这样的部分:
render(partial: 'path_to_partial', locals: { var_in_partial: var_in_current_scope })所以..。
render(partial: 'scribbles/vote', locals: { scribble: scribble })它将在scribble部分中被称为_vote,我们从当前的作用域传入scribble。
或者,您可以使用@scribble,它是在控制器中定义的,在当前的请求周期中对所有视图/部分都可用。
https://stackoverflow.com/questions/24442713
复制相似问题