我有一个名为 list.html.erb 的页面的控制器
当用户单击链接时,我想将内容动态附加到页面并随后执行 javascript。是否有可能有一种方法来呈现 js.erb 文件并将包含内容的变量放入该文件中?
最好的菲尔
我有一个名为 list.html.erb 的页面的控制器
当用户单击链接时,我想将内容动态附加到页面并随后执行 javascript。是否有可能有一种方法来呈现 js.erb 文件并将包含内容的变量放入该文件中?
最好的菲尔
如那里所述: http: //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to您需要使用
link_to 'Something', 'somewhere', remote: true
是的当然。不过,这可能不是最好的做法。
如果您通过 Javascript 增强视图的功能,最好将代码保留在 Javascript 中,而不是 Ruby 生成的 Javascript。
创建一个简单的 HTML 链接,以 JSON 格式或什至作为 HTML 片段从控制器获取新内容。使用诸如 $.ajax 及其成功回调函数之类的东西将所述响应附加到页面中的元素。
$.ajax({
url: "whatever/here",
type: "GET",
data_type: "json",
success: function(response) {
$("#element_in_question").append(response); //if HTML; if JSON, parse and build the HTML
},
error: function(xhr, status, message) {
//indicate failure somehow
}
});
您可以在 list.html.erb 中包含部分内容,并在更改页面 list.html.erb 上的某些内容时显示部分内容。例如考虑您的 list.html.erb 文件,您可以在页面中包含以下内容
<form_for :something, :remote => true, :method => get :url => {:action => "partial"} do |f| %>
//write your code here
<%=f.submit%> //here you can have :onchange in the form_for tag if you do not want a submit button
在您的列表页面中为部分写一个部门,如下所示
<div id="partial">
</div>
像这样写一个 partial.js.erb 文件:
$('#partial').html("<%=j render "partial" %>");
_partial.html.erb
使用要动态添加 list.html.erb 的内容创建一个文件。
在控制器中,添加以下代码:
def partial
//write your code here
respond_to do |format|
format.js
end
这将在您的列表页面的 div 标签中显示添加的内容,其中 div id 为“partial”