如何让我的表单使用haml在rails上的ruby中使用ajax?

时间:2013-05-07 18:52:49

标签: ruby-on-rails haml

我正在尝试创建一个表单来通过ajax发送数据并命令更新用户(我使用了脚手架,因此更新方法已经存在)。

我创建了我的表单,我做了类似的事情

%form{ :action => "/users/customsave", :method => "post", :controller => "/users", :remote=>"true"}

根据我所说的:remote => true会用ajax来做,问题是不起作用,最糟糕的部分是在我提交帖子后因某些奇怪的原因导致我的会话被杀。

知道怎么做吗?用ajax提交?

由于

4 个答案:

答案 0 :(得分:2)

您可以使用

%form{ :action => "/users/customsave", :method => "post", :controller => "/users", data: {remote: true}}

您可以使用

= form_for 'model', url: "/users/customsave", method: :post, data: { remote: true } do |f|
  = f.text_field 'field_name'
  / generates <input type="text" name="model[field_name]" 
    id="model_field_name"
    value="value of the field in case you don't specify string, 
    instead an actual model">

答案 1 :(得分:1)

您应该声明您的表单:

= form_tag({:controller => "users", :action => "customsave"}, :remote => true)

答案 2 :(得分:0)

你应该使用表单助手,正如@MrYoshiji在他的评论中所说,例如,form_tag

但是,如果您仍想使用HAML,则需要使用data-remote

%form{ :action => "/users/customsave", :method => "post", :controller => "/users", 'data-remote'=>"true"}

但请注意,因为这不是预期的界面,将来可能会发生变化,导致您身边的升级。

答案 3 :(得分:0)

首先,您需要使用form_forform_tag%form创建一个html表单,如下所示:

= form_tag({:controller => "users", :action => "customsave"}, :remote => true) 

其次,请确保您实际创建了一个customsave.js.erb js视图来处理ajax请求的响应。