我正在开发Rails 3.0.3并使用jQuery。这是我的javascipt include标签:
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", "rails.js" %>
我想在更改下拉列表时发送JS请求,并编写以下代码来执行此操作。此表单不会作为JS处理,而是作为HTML请求处理:
<% form_tag(aggregatedata_path, :method=>'post', :id => "dd-container", :remote => true ) do %>
<%= select_tag(
:group,
options_for_select(groups_list, @group),
{
:id => "dd",
:onchange => "this.form.submit();"
} ) %>
<% end %>
我在SO上看了一篇类似的帖子,提出问题是js库,但除非没有别的办法,否则我宁愿避免改变这一点,以免其他一百万件事破裂。我有另一个表单作为JS请求处理就好了。这是:
<% form_tag(poweroutput_path, :method=>'post', :id => "date-form", :remote => true ) do %>
<%= text_field_tag(
'dt', nil,
{
:id => 'date-field',
:class => 'dateformat-d-dt-m-dt-Y',
:value => Time.now.getlocal.strftime("%d.%m.%Y")
}) %>
<%= submit_tag " ", :id => "go-button" %>
<% end %>
我看到的唯一明显区别是第一个使用:onchange => "this.form.submit();"
而第二个不使用:remote => true
。该函数中是否有某些内容覆盖了我之前的{{1}}?
答案 0 :(得分:1)
当我搜索“Rails 3 remote form”时,我得到的第一个打击拉起了这个链接:
http://www.alfajango.com/blog/rails-3-remote-links-and-forms/
它在讨论:remote => true
做什么的第一组要点中解释了它:
- 找到远程链接,表单和输入,并覆盖其点击事件以通过AJAX提交给服务器。
醇>
由于您手动提交表单,我认为任何点击处理程序都被绕过。
答案 1 :(得分:1)
我同意戴夫的观点。由于你已经在使用jQuery,我会选择这样的东西:
$('#dd-container').change(function(){
$.ajax({
type: "POST",
url: your_path,
data: $(this).find('option:selected').attr('value'),
success: function( response ) {
console.log( response );
}
});
});
哦,不要忘记从表单中删除:onchange => "this.form.submit();"
和, :remote => true
。