如何通过select_tag调用helper方法

时间:2013-05-20 07:55:33

标签: ruby-on-rails-3 onchange helper html-select

我试图从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()'

1 个答案:

答案 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]