2011-06-02 91 views
0

我是新的rails和javascript。這可能是一個非常簡單的問題,但我仍然無法弄清楚。 目標是,我有一個按鈕的鏈接,點擊時應在同一頁面上加載地址表單。到代碼鏈接是使用javascript加載遠程窗體3在導軌3中

<%=的link_to 「添加地址」,new_address_path,{:類=> 「按鈕」},{:遠程=>真}%>

的收件人姓名地址文件「地址/ new.html.erb」 是:

<div id="newaddr"> 
    <%= render :partial => 'form', :local => @address %> 
</div> 

形式是 「地址/ _form.html.erb」:

<%= form_for(@address, :remote => true) do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <%= f.text_field :line_1 %> 
    <%= f.submit %> 
<% end %> 

JavaScript文件 「地址/ new.js.erb」:

$('#newaddr').append("<%= escape_javaScript(render 'form', :local => @address) %>"); 

在addresses_controller文件的新方法是:

def new 
    @title = "Add Address" 
    @address = Address.new 
    respond_to do |format| 
    format.js 
    end 
end 

但它不工作。有什麼我在這裏失蹤?

謝謝!

+0

你得到的錯誤是什麼?如果這是一個JavaScript問題,並且您使用的是Firefox,我建議使用Firebug來調試Ajax請求。 – dombesz 2011-06-02 08:59:25

+0

只是爲了確認,你是否包含必要的JavaScript庫?佈局中的<%= javascript_include_tag:defaults%>? – DanneManne 2011-06-02 12:24:24

+0

我得到的錯誤是開始GET「/ addresses/new」for 127.0.0.1 at 2011-06-02 08:29:34 -0500 AddressController處理#new as HTML 已完成406在13ms內不可接受 – 2011-06-02 13:32:04

回答

-1

更改您的new.js.erb文件:

$('#newaddr').append("#{escape_javascript(render :partial => 'form', :local => @address)}"); 
+0

我試過了 - 不起作用。任何建議? – 2011-06-02 13:34:03

0

你得到的錯誤說明你的鏈接被作爲一個正常的HTML鏈接,而不是JS執行。你的控制器方法只接受js,所以它返回406,不可接受。

最明顯的原因是rails.js javascript不包含在您的application.html.erb中。通常添加以下行是足夠了:

<%= javascript_include_tag :default %> 

,或者,如果不工作,做到這一點明確:

<%= javascript_include_tag 'jquery.min.js', 'jquery-ui.min.js', 'rails.js' %> 

希望這有助於。