我解决了问题,并获得了基于AJAX的元素来维护状态。这是我的jQuery代码:
$('#before_category_select').loadPage();jQuery.fn.loadPage = function(){if($("#new-post-area").length > 0){ $.getJSON('/home/cat_select_state.json', function(data){ $.get('/posts/update_sub_cat/' + data.cat_state, function(data1){$("#sub-category-select").html(data1); }) }); }}
我为获取select元素的状态而调用的控制器 *** 作,该 *** 作在页面提交时存储为会话变量:
def cat_select_state @cat_session = {:cat_state => session[:new_post_category], :sub_cat_state => session[:new_post_sub_category]} respond_to do |format| format.json {render :json => @cat_session} end end
最后,我为选择框使用了默认值,这些默认值存储为会话变量。如果会话变量为null,则默认值为选择框的提示消息。
<%= collection_select :post_category, :id, @categories, :id, :name, options = {:prompt => "Select a category", :selected => session[:new_post_category]} %>
子类别选择元素的HTML呈现在javascript文件update_sub_cat.js.erb中。
sub-category <%= collection_select :post_sub_category, :id, @sub_categories, :id, :name, options = {:prompt => "Select a sub-category"} %>
请提出您是否还有其他改进建议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)