【问题标题】:Can't pass multiple locals when rendering JS渲染 JS 时不能传递多个局部变量
【发布时间】:2013-09-03 01:54:39
【问题描述】:

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

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

该文件名为“like.js.erb”,我知道它会起作用,因为当我在文件中放入标准的 javascript 警报时,它会完美运行。 文件(like.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 操作正确完成,但根本没有返回任何内容。好像不喜欢传递多个locals。

有什么想法吗?谢谢!

【问题讨论】:

  • 你能解释一下js.erb文件中提到的哪些代码没有执行吗?

标签: ruby-on-rails ajax post locals


【解决方案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

【讨论】:

  • 感谢您的意见。我应该如何引用 like.js.erb 文件中的变量?喜欢 或 ?我都试过了,出于某种原因,这两个都返回空白值。有任何想法吗?非常感谢!
  • 只是 (除非你定义了@media_id = something)。如果它们返回空白值,那是因为它们为零。 like_type 也是空白的吗?
  • 是的,尽管我确定我正在传递数据,但两者都是完全空白的……我回家后会发布更多信息,希望您能看一下?非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多