use*_*116 4 jquery ruby-on-rails selectionchanged
使用select有一个下拉列表
<%= select("array", "folder", @rows.keys, {}, :onchange =>"?" )%>
Run Code Online (Sandbox Code Playgroud)
有部分称为"形式"
<%= render "form"%>
Run Code Online (Sandbox Code Playgroud)
每当选择发生变化时,我都需要渲染部分.如果有办法,请告诉我.我发现它remote_function已经从rails 3.0中弃用了.我在这里看到了所有可能的链接onchange和select标签,但找不到合适的答案.我是rails,jQuery和Ajax的新手.请帮忙
谢谢
Zaj*_*ajn 12
肯定有一种方法可以做到这一点,它有点工作,但是一旦掌握了它就很容易.
首先,您需要将jQuery函数附加到change选择框的事件中.这可以通过向您的application.js文件添加一些JavaScript来完成.我们想在这里这样做,所以我们的javscript仍然不显眼.你可以在你的application.js文件中尝试这样的事情:
$(document).ready(function(){
$("#select_field_id").change(function(){
var id = $(this).children(":selected").val();
var params = 'some_id=' + id;
$.ajax({
url: "/some_controller/change_folder",
data: params
})
});
Run Code Online (Sandbox Code Playgroud)
这样做是将匿名函数附加到change具有id的选择字段的事件select_field_id.当该字段发生变化时,id所选选项的存储将存储在var中id,然后我们为我们将要发送的请求创建一个参数var params = 'some_id=' + id;.some_id将是你正在改变的任何东西的ID(所以folder_id如果你在你的例子中使用的是这个).
现在我们需要创建在我们的控制器中处理此请求的方法.因此,请使用文件夹示例,将其添加到文件夹控制器:
def change_folder
@folder = Folder.find(params[:some_id])
respond_to do |format|
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
这只是根据您的ajax请求发送的id找到一个文件夹change_folder.它还将查找要呈现的对应change_folder.js.erb或change_folder.js文件.
现在我们需要写一个change_folder.js.erb文件.我们需要使用我们获得的新文件夹替换页面某些部分的HTML,因此您应该div使用具有唯一ID的某种或其他部分.
在里面change_folder.js.erb,我们可以这样写:
$('#your_div').html("<%= escape_javascript(render(partial: "folder",
locals: { :folder => @folder })).html_safe %>")
Run Code Online (Sandbox Code Playgroud)
这将呈现_folder.html.erb与change_folder.js.erb文件位于同一目录中的部分调用.部分将需要使用@folder变量来显示字段,因此您需要以下内容:
<%= @folder.name %>
<%= @folder.last_updated %>
Run Code Online (Sandbox Code Playgroud)
在你的_folder.html.erb部分内..name和.last_updated正在当然只是做了一个文件夹模式的特性.您必须使用您为Folder模型提供的任何属性.
这应该让你去你需要的地方.如果您需要澄清任何内容,请告诉我.
| 归档时间: |
|
| 查看次数: |
6265 次 |
| 最近记录: |