我有两个问题。
我在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中简单干净地做到这一点?我迫切需要编写这方面的帮助。
非常感谢你! 如果您需要更多详细信息,请与我们联系。
答案 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);
}
})
});
});
(我没时间测试这个,但你明白了)
说实话,我不确定有什么方法可以不引人注意地做这种事情(或者我很感兴趣!)。