2012-04-19 94 views
1

我的形式阿賈克斯不能Rails3.2.1

<%= form_tag load_link_path, :remote => true, :html => { :'data-type' => 'html', :id => 'load_link_form' } do %> 
<fieldset> 
    <%= url_field_tag(:url) %> 
    <div class="validation-error"></div> 
    <%= submit_tag %> 
</fieldset> 
<% end %> 

我的行動

def load 
    format.js 
end 

我的JS視圖(load.js.erb)工作

alert(0); 

當提交表單,警報不會觸發。控制檯輸出:

Processing by LinksController#load as JS 
    Parameters: {"utf8"=>"✓", "commit"=>"Save changes", "url"=>"http://www.alfajango.com/blog/rails-3-remote-links-and-forms/", "authenticity_token"=>"KWwfZH+sivCrWdlVBUPM0MBRPHzcDhmbB96ckLQ82Dg="} 
    Rendered links/load.js.erb (0.4ms) 
Completed 200 OK in 2822ms (Views: 9.9ms | ActiveRecord: 0.0ms) 
+1

您忘記了您的問題:) – Thilo 2012-04-19 14:48:50

+1

我認爲警報不會觸發?嘗試將respond_to | format | ...以format.js結尾 – Saifis 2012-04-19 16:11:29

+0

嗨,添加「respond_to do | format |」時無法工作 – why 2012-04-20 01:19:05

回答

3

嘗試控制器的頂部添加respond_to,然後包裝一下你format.js在respond_with塊調用

class LinksController < ApplicationController 
    respond_to :html, :js 

    def load 
    respond_with do |format| 
     format.js 
    end 
    end 
end 

我建議你閱讀this article,這是最好的指南到與rails3 imo的ajax。

UPDATE:

我把它做了一些小改動後的工作:

在軌的Ajax調用「GET」,所以如果你想要做一個「POST」的默認方法,您需要將其與:data-method=>"post"一起加入。我也是從你的表單標籤刪除HTML哈希並設置數據類型腳本,見下圖:

<%= form_tag load_link_path, :remote => true, :id => 'create_link_form', :data => {:type=>"script", :"method"=>"post"} do %> 

此外,您還需要從js.erb文件取消對警報,所以變化來自:

//alert(0); 
$('#message').val('ok'); 

到:

alert(0); 
//$('#message').val('ok'); 

希望這會有所幫助,讓我知道,如果沒有,我會推我的碼T o github :)

+0

感謝您的回覆,稍後再嘗試 – why 2012-04-20 01:37:17

+0

它不起作用:(你認爲我錯過了什麼嗎? – why 2012-04-20 14:19:25

+0

是否有可能將你的代碼上傳到github,我很高興克隆它並查看它失敗的位置 – stephenmurdoch 2012-04-20 14:53:53