如何将代码包含到js.erb视图中?在轨道3

时间:2012-10-16 10:12:39

标签: ruby-on-rails ajax unobtrusive

我有一个使用不显眼的ajax的网站。

简而言之,流程是:

  • 远程链接
  • 由控制器管理的请求
  • js.erb查看将回复发送回浏览器

我希望所有js.erb视图执行类似的“维护活动”,例如在需要时插入flash消息,更新URL等。

我怎样才能干这个?理想情况下,我会使用部分代码来执行每次但我找不到如何执行此操作。

更新1:示例

我的js.erb文件:

$("#challenge_actions").html("<%= escape_javascript(render partial: "challenges/best_practice_button")%>");
$("#flash_messages").html("<div id='flash_notice'><%= escape_javascript(flash[:notice])%></div>");

如何使用flash_messages提取行并将其自动包含在我的所有js.erb文件中?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用js布局,就像html布局一样。

<强>布局/ custom.js.erb

alert("<%=j flash[:notice] %>");
<%= yield %>

<强>控制器/ your_controller.rb

def your_action

  flash[:notice] = "hello world"
  @hello = "hello world"

  respond_to do |format|
    format.js { render layout: "custom" }
  end
end

<强> your_action.js.erb

alert("<%= j @hello %>");

答案 1 :(得分:0)

你也可以在erb中使用部分模板,假设你想用id“container”替换div的内容,然后假设你正在使用jquery你可以做

$('#container').html('<%= escape_javascript(render(:partial => 'mypartial'))%>')