2014-06-08 30 views
1

我不知道發生了什麼... 我試圖發送has_many關聯的hidden_​​fields,但代碼沒有出現在HTML。爲什麼代碼不會出現在html中... ...在Rails中

我在發送代碼。也許這會更清楚

在html.erb:

<div id="billing_fields"> 
    <div class="form-group col-xs-12 col-sm-11 col-md-10 col-lg-7"> 
     <%= f.fields_for :orders do |field| %> 
     <div class="field"> 
      <%= field.hidden_field :digital_product_plan_id, :value => @orders.digital_product_plan_id %> 
      <%= field.hidden_field :express_payer_id, :value => @orders.express_payer_id %> 
      <%= field.hidden_field :express_token, :value => @orders.express_token %> 
     </div> 
    <% end %> 
    </div> 
</div> 

它產生這個網站:

<div id="billing_fields"> 
    <div class="form-group col-xs-12 col-sm-11 col-md-10 col-lg-7"> 
    </div> 
</div> 

當我更換 「f.fields_for:訂單」 與 「f.fields_for:訂單」在html.erb中的「 」,生成了這個html(我期待類似於「訂單」(以前的版本))

<div id="billing_fields"> 
    <div class="form-group col-xs-12 col-sm-11 col-md-10 col-lg-7"> 
     <div class="field"> 
      <input id="user_order_digital_product_plan_id" name="user[order][digital_product_plan_id]" type="hidden" value="1" /> 
      <input id="user_order_express_payer_id" name="user[order][express_payer_id]" type="hidden" value="FVPYDJ7JCUY96" /> 
      <input id="user_order_express_token" name="user[order][express_token]" type="hidden" value="EC-32X744951C158904E" /> 
     </div> 
    </div> 
</div> 

的billing_fields是這樣的form_for內:

<%= form_for @user, :url => registration_path(@user), html: {class: "form-horizontal", role: "form"} do |f| %> 

訂單控制器:

def new 
    @user = current_user 
    @orders = Order.where(:paypal_express_token => params[:token]).last 
    @orders.get_details 
    if ! @orders.paypal_email.blank? 
    @orders.save! 
    end 
    if @user.nil? 
    @user = User.new 
    ... 
    end 
    @orders.user ||= @user 
end 

訂購模型:

belongs_to :user 

用戶模型:

attr_accessible ... :orders_attributes 
has_many :orders 
accepts_nested_attributes_for :orders 

我正在填充丟失...任何提示?

這這個問題的另一個方面的問題涉及: How to create a relationship of a new parent with an existing child in Rails

回答

3

幾個問題:

f.fields_for

你可能知道這一點,但你f.fields_for調用需要包含一個form_for內方法。你的HTML顯示它自身 - 如果此設計,你需要把它放在一個form_for


build

你真正的問題是有可能與缺乏呼籲您的關聯數據build內:

#app/controllers/users_controller.rb 
Class UsersController < ActiveRecord::Base 
    def new 
     @user = User.new 
     @user.orders.build #-> this should get f.fields_for to show 
    end 
end 

這裏是一個great resource詳細說明它是如何工作

從SevenSeaCat

注:

它遍歷用戶的命令輸出的領域,所以不會訂單 輸出字段,如果用戶沒有任何

+2

很好的答案,但我添加一個像'它遍歷輸出字段的用戶的訂單,所以它不會輸出字段的訂單,如果用戶沒有任何' – sevenseacat

+0

感謝您的回答和評論!但我現在的問題是,我不知道如何添加一個現有的訂單給用戶。訂單存在沒有用戶關聯。這是我在之前的問題中提出的問題:http://stackoverflow.com/questions/24087988/how-to-create-a-relationship-of-a-new-parent-with-an-existing-child- in-rails/ 我會查看您發送和研究的鏈接。但如果你能解決這個問題,我將不勝感激! –

相關問題