渲染JS时无法传递多个局部变量

时间:2013-09-03 01:54:39

标签: ruby-on-rails ajax post locals

我正在尝试使用以下代码呈现javascript文件(通过远程AJAX调用):

respond_to do |format|
                format.js { render "like", :locals => {:media_id => media_id, :like_type => like_type}}
end

该文件被命名为“like.js.erb”,我知道它会起作用,因为当我在文件中只放置一个标准的javascript警报时,它可以正常工作。 该文件(如.js.erb)如下所示:

<% if like_type == "l" %>
    alert("liking as <%= like_type %> for media_id <%= media_id %>");
    $('like_<%= media_id %>').update("liked");
<% elsif like_type == "u" %>
    alert("unliking as <%= like_type %> for media_id <%= media_id %>");
    $('like_<%= media_id %>').update("unliked");
<% end %>

当文件包含上面的代码时,POST操作会正确完成,但根本不会返回任何内容。似乎它不喜欢传递多个本地人。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用:locals选项,则需要提供:partial密钥作为参数。

respond_to do |format|
                format.js { render :partial => "like", :locals => {:media_id => media_id, :like_type => like_type}}
end

或:

respond_to do |format|
                format.js { render "like", :media_id => media_id, :like_type => like_type}
end