更多

2013-12-08 55 views
0

campaign.rb更多

class Campaign < ActiveRecord::Base 
    has_many :items 
    accepts_nested_attributes_for :item 
end 

item.rb的

class Item < ActiveRecord::Base 
    belongs_to :campaign 
end 

運動有2個屬性:標題和描述
項目具有1個attirubte:命名

我會嘗試用言語解釋自己,我想創造一個neste d表格中用戶插入廣告系列的名稱和描述,但他可以插入不止一個項目,他可以插入一個項目列表(特別是會有一個「+」按鈕,當點擊一個新的項目行時,用戶可以插入項目)。
最後所有發送一起點擊一個提交按鈕。 如何使用導軌達到我的目標?

回答

0

我剛纔昨天回答了一個問題。這裏的鏈接:Rails accepts_nested_attributes_for with f.fields_for and AJAX

我會寫它是如何工作&提供一些資源,幫助給你一些更多的想法:


如何使用

加載關聯的字段成表格是通過使用f.fields_for

你會這樣做:

#app/views/campaigns/new.html.erb 
<%= form_for @campaign do |f| %> 
    <%= f.fields_for :items do |a| %> 
     <%= a.text_field :information %> 
    <% end %> 
<% end %> 

爲了得到這個工作,你必須build在後端相關的ActiveRecord對象在你面前呈現視圖,就像這樣:

#app/controllers/campaigns_controller.rb 
def new 
    @campaign = Campaign.new 
    @campaign.items.build 
end 

添加額外的字段通過Ajax

使用Ajax添加額外的字段需要設計一個新的問題解決方案

你這樣做的方式是把f.fields_for文字&放到一個部分。這部分可以從原始視圖以及另一個視圖(我們可以通過Ajax呈現)調用

Ajax部分的工作原理基本上是從窗體(ajax請求)獲取請求,然後使用其他操作在您的控制器中構建一個新的ActiveRecord對象&呈現另一個將包含另一個表單的部分。然後這個部分將調用原始的f.fields_for部分,允許您呈現另一個字段

然後,您的Ajax可以提取新字段&並將其附加到您的頁面。你周圍的id問題得到的方式(保持編號順序&唯一的)是採用了child_index方法,並使用Time.now.to_i生成時間戳

如果你看過我的回答這個答案的頂部引用,這一切纔有意義:)

這一些重要的資源:

0

與教程中的一個不錯的寶石可從ryanbates誰是railscasts.com site.You的作者可以使用this,如果你想嘗試手動使用fields_for而看看tutorial here

而且還用here這樣的形式編寫並管理一些用於添加或刪除的jquery代碼。在提出問題之前請先將它加入Google!