我试图从select_tag调用helper方法。我试过这个:
<%= select_tag(:themes, options_for_select({"Black" => "compiled/styles", "Green" => "compiled/styles2"})) %>
当我放alert(this.options[this.selectedIndex].value)
而不是调用方法时,它可以工作。如何更改我的代码以根据需要调用方法?
修改的
我在application.js
$(document).ready(function() {
$('#display_themes').change(function(){
$.ajax({url: '<%= url_for :controller => 'application', :action => 'set_themes()', :id => 'this.value' %>',
data: 'selected=' + this.value,
dataType: 'script'
})
})
});
在控制器中我有set_themes方法
def set_themes()
@themes = params[:id]
respond_to do |format|
redirect_to '/galleries'
format.html # index.html.erb
format.xml { render :xml => @themes }
end
end
现在的问题是@themes仍然是空的,即使我更改了下拉列表
Routes.rb
match '', :controller => 'application', :action => 'set_themes()'
答案 0 :(得分:1)
路由到application#set_themes
:
match '/set_themes', to: 'application#set_themes', as: :set_themes
完成后,只需将al中的url指向如下:
$.ajax({url: "<%= set_themes_path %>",
根据您在 application.js 中尝试执行的操作,控制器中应该 @themes = params[:selected]
。