如何在rails上的ruby中对Select_tag的“onchange”使用特定的controller \ action

时间:2012-04-14 07:17:06

标签: ruby-on-rails ruby ruby-on-rails-3

我知道MVC和Ruby上的铁路环境 我有这个代码 <%= select :language, :language_id, options_for_select([ "Arabic", "English"]), {:prompt => "#{t('language')}"}, {:onChange => "#{remote_function(:url => {:controller => 'ConfigurationController',:action => "change_language"} )}"} %> 我不能让Select调用此操作并在更改时为页面设置PostBack

选择索引更改后

什么都没发生?

2 个答案:

答案 0 :(得分:1)

因为这是一个远程函数调用。如果从服务器返回任何错误,你能在浏览器的控制台中看到。

select_tag的语法,你看起来很好用。

编辑:

你是否试过提醒onchange事件?参考这个语法

 <%= select_tag "language", options_from_collection_for_select(@collection,'value','name'), html_options = { :onChange=> "alert('');" :style=> "display:block;" } %>

你可以使用

创建你的收藏
@collection = ["en","ab"]
@collection = @collection.map { |name, value| OpenStruct.new(:value => name, :name => name) }

答案 1 :(得分:0)

您使用的是什么版本的Rails?看起来在3.1 http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/remote_function

中不推荐使用远程功能

使用jQuery响应更改事件:

jQuery ->
  $("#select_id").change ->
    $.ajax(
      url: "url",
      dataType: "json",
      data: "data to send")
        .done (data) ->
          do_something_on_success()
        .fail (data) ->
          do_something_on_fail()