带有A标签的远程表单在Rails 3中提交

时间:2010-08-07 11:16:55

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

我有一个带有手工制作按钮的遥控表格。我在表单标签中使用data-remote = true,但我不知道如何使用link标签在表单提交中发布表单数据。当我使用data-remote和data-method时,它会创建一个带有空参数的远程调用,所以我不会将submit()函数调用到我的表单。

我的表格是:

<form accept-charset="UTF-8" action="/tasks" data-remote="true" method="post">

我在表单标记下的链接标记是:

它使用空POST参数创建远程调用:

<a class='minibutton' data-remote='create' href='/tasks/create' data-method='post'>

它不发送任何POST信息,只发送标题:

<a class='minibutton' data-remote='create' href='/tasks/create'>

如何调用优雅的表单的submit()方法?我想我不需要创建javascript hacks来使它工作。我吗?

1 个答案:

答案 0 :(得分:2)

我想有两种方法可以解决它:

1。 我看到你在你的链接上使用了一个名为'minibutton'的类,这表明你希望它看起来像一个按钮。因此,请使用表单中的按钮标记代替链接(或<input type="submit">标记):

<button type="submit" value="Submit">

使用CSS根据自己的喜好设计样式。你甚至可以在它们上面使用图标。查看this blog post了解详细信息和准备使用的CSS代码块。

2。 如果您仍想使用该链接,可以在链接和表单上设置“id”属性,并添加一个单击事件观察器以提交表单。 假设您正在使用Prototype,请将类似的内容放入页面的头部:

<%= javascript_tag do %>
    $('YOUR-LINK-ID').observe(
        'click', 
        function(el, value) {
          $('YOUR-FORM-ID').request({
            onSuccess: function(response) {eval(response)}
          })
        }
    );
<% end %>

这是假设您的回复内容类型是text / javascript。如果不是,则必须使用onSuccess和/或onComplete回调来用响应内容替换页面。

有关观察和提交表单的详细信息,请参阅Form.requestEvent.observe上的文档。

This question也可能有所帮助。