rails 3中的onchange remote_function - 它有效吗?我怎么能不引人注目地完成它?

时间:2011-01-19 19:05:33

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

我有两个问题。

我在rails 3应用程序中有一个select标签,如下所示:

 <%= select(@adverse_event_template_settings, 
    "display_arms", 
    options_for_select([["Yes", true], ["No", false]]), 
    { :selected => :display_arms },  
    :onchange => remote_function(:update => "display_arms", 
          :method => "put", 
          :with => "'display_arms=' + value", 
          :url => { :controller => :adverse_event_template_settings, 
               :action => :update, :id => @aets.id})) %>

这就是我想要它做的事情 - 也就是说,当选择框值改变时调用控制器动作。

尽管这有效,但我想知道1)这在rails 3中有效吗?我知道这是一个突兀的javascript,但是在rails 3中工作的remote_function对我来说似乎很奇怪 - 这里有什么不对吗?

如果以上内容无效,我真的非常想知道2)我怎么能不引人注意地完成同样的动作(即在同一个控制器中调用相同的动作)?有没有办法在导轨3中简单干净地做到这一点?我迫切需要编写这方面的帮助。

非常感谢你! 如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:7)

(我假设你使用的是jQuery)。

我会将javascript部分放在.js文件中并使用jQuery管理onchange事件。

<%= select(@adverse_event_template_settings, 
    "display_arms", 
    options_for_select([["Yes", true], ["No", false]]), 
    { :selected => :display_arms }) %>

并在js文件中:

  $(document).ready(function() {

    $('#display_arms').change(function(){
      $.ajax({url: 'YOUR URL',
        data: 'display_arms=' + value,
        success: function(data){
          $('#display_arms').html(data);
          }
      })
    });
  });

(我没时间测试这个,但你明白了)

说实话,我不确定有什么方法可以不引人注意地做这种事情(或者我很感兴趣!)。