2014-02-15 44 views
0

我有一個顯示交易的表單(在index動作中)。表格由兩部分組成:主要部分和附加部分。通過JS渲染窗體的一部分

<%= form_for transaction, remote: true do |f| %> 
    # some form fields (main part) 
    <%= link_to 'Show additional', '#', class: 'show_additional' %> 
    <%= render 'transaction_additional', transaction: transaction, f: f %> 
<% end %> 

現在顯示附加部件的鏈接只能通過JS顯示(從中刪除display: none;)。但我不想在頁面上渲染額外的部分,只有在用戶點擊此鏈接時才渲染它。由於頁面上有很多交易,並且需要大量時間才能加載頁面,其中包含所有頁面的其他信息。

我試圖讓它遠程並使用show加載它。

<%= form_for transaction, remote: true do |f| %> 
    # some form fields (main part) 
    <%= link_to 'Show additional', transactions_path(transaction), class: 'show_additional', remote: true %> 
<% end %> 

而且在show.js.erb

$(this).closest('form').append('<%= render 'transaction_additional', transaction: @transaction, f: f %>'); 

它需要在控制器show行動@transaction,但我不知道怎麼打發f變量show行動,並獲得

undefined local variable or method `f' for #<#<Class:0x00000109d11258>:0x000001017939a0> 

謝謝你的幫助!

+0

發值在地區 –

+1

你既沒有'this'也沒有'f'在你的show.js.erb中,你可以把你的整個表單放在show.js.erb裏面,除了鏈接 –

回答

0

繼拉胡爾·辛格,你不必在show.js.erb可用f對象,這意味着你必須初始化一個新的

我應該這樣做:

#app/views/view/show.js.erb 
<%= form_for @transaction do |f| %> 
    $("form").append('<%= render 'transaction_additional', transaction: @transaction, f: f %>'); 
<% end %>