Don*_*ato 11 ruby-on-rails ruby-on-rails-3
我有以下选择列表.
<%= select_tag "project_id", options_from_collection_for_select(@projects, "id", "title") %>
Run Code Online (Sandbox Code Playgroud)
当用户从上面的列表中选择一个选项时,下面的列表应该根据上面的选择用数据库中的值填充.
<%= select_tag "version_id", options_from_collection_for_select(??project.versions??, "id", "title") %>
Run Code Online (Sandbox Code Playgroud)
我想我应该使用onchange事件,但我不知道如何使用它.请有人帮帮我.谢谢!
rub*_*nce 25
使用Javascript
function update_versions_div(project_id) {
jQuery.ajax({
url: "/update_versions",
type: "GET",
data: {"project_id" : project_id},
dataType: "html"
success: function(data) {
jQuery("#versionsDiv").html(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
调节器
def edit
@projects = Project.all
@versions = Version.all
end
def update_versions
@versions = Version.where(project_id => params[:project_id]).all
render :partial => "versions", :object => @versions
end
Run Code Online (Sandbox Code Playgroud)
视图
<%= select_tag "project_id", options_from_collection_for_select(@projects, "id", "title"), :prompt => "Select a project", :onchange => "update_versions_div(this.value)" %>
<div id="versionsDiv">
<%= render :partial => 'versions', :object => @versions %>
</div>
Run Code Online (Sandbox Code Playgroud)
部分:_version.html.erb
<%= select_tag "version_id", options_from_collection_for_select(versions, "id", "title"), :prompt => "Select a version" %>
Run Code Online (Sandbox Code Playgroud)
还要/update_versions在routes.rb中添加路由
match "/update_versions" => "<controller>#update_versions"
Run Code Online (Sandbox Code Playgroud)
在这里,您应该替换<controller>为控制器的名称.
我没有测试过代码,因此可能存在错误.
更新
PullMonkey使用Rails 3示例更新了代码,这显然优于此代码.请结算http://pullmonkey.com/2012/08/11/dynamic-select-boxes-ruby-on-rails-3/也
| 归档时间: |
|
| 查看次数: |
14331 次 |
| 最近记录: |