的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);
}
});
}
控制器
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
查看
<%= 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>
部分:_version.html.erb
<%= select_tag "version_id", options_from_collection_for_select(versions, "id", "title"), :prompt => "Select a version" %>
另外在你的routes.rb中添加對/update_versions
路線
match "/update_versions" => "<controller>#update_versions"
在這裏,你應該與控制器的名稱替換<controller>
。
我還沒有測試代碼,所以可能有錯誤。
更新
PullMonkey已更新使用Rails 3爲例,這是比這個代碼明顯優於代碼。請結帳http://pullmonkey.com/2012/08/11/dynamic-select-boxes-ruby-on-rails-3/也
看到這個[這個問題](http://stackoverflow.com/questions/5472045/multilevel-select-on-rails) – rubyprince
@rubyprince我已經寫了關於軌道3(!!)。在Rails 3 –
oh ..sorry中不存在remote_function,在這種情況下,您可以用jQuery中的某些東西替換onchange函數...我會用它發佈一個答案... – rubyprince