0

我正在尝试从 select_tag 调用辅助方法。我试过这个:

<%= 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 仍然是空的,即使我更改了下拉列表

路由.rb

match '', :controller => 'application', :action => 'set_themes()'
4

1 回答 1

1

路由到application#set_themes

match '/set_themes', to: 'application#set_themes', as: :set_themes

完成后,只需将 ajax 中的 url 定向如下:

$.ajax({url: "<%= set_themes_path %>",

@themes = params[:selected]根据您在application.js中尝试执行的操作,它应该在您的控制器中。

于 2013-05-21T02:56:00.220 回答