0
有問題我想通過表單提交地址添加到用戶模型,但我有麻煩。用戶:Rails 2.3.5與form_for和fields_for
class User < ActiveRecord::Base
has_many :addresses
end
可以通過由帳戶控制器控制的帳戶頁面向他的帳戶添加地址。
class AccountsController < ApplicationController
def addresses
@user = current_user
@addresses = @user.addresses
default_country = Country.find Spree::Config[:default_country_id]
@countries = Checkout.countries.sort
@states = default_country.states.sort
end
end
在查看「/帳號/地址」,我有我試圖提交表單:
<% form_for @user do |user_form| %>
<% user_form.fields_for :address do |address_form| %>
<%= address_form.text_field :firstname, :class => 'required', :value=>"" -%>
<%= address_form.text_field :lastname, :class => 'required', :value=>"" -%>
<%= address_form.text_field :business_name, :class => 'required', :value=>"" -%>
<%= address_form.text_field :address1, :class => 'required', :value=>"" -%>
<%= address_form.text_field :address2, :value=>"" %>
<%= address_form.text_field :city, :class => 'required', :value=>"" -%>
...
<%= address_form.submit %>
<% end -%>
<% end %>
我在這裏看一個一對多fields_for代碼:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for
,但問題是我有多個地址,但只希望在同一時間提交一個地址。我需要添加到用戶/地址模型和/或帳戶控制器中,以便在我提交該表單時成功創建地址並將其添加到用戶模型中?如果有更簡單的方法來實現這一點,請讓我知道。
我很困惑這將如何工作。可以說用戶已經有2個地址了,並且想要添加一個來創建3個地址段,是不是會有2個地址段?我的控制器動作應該是什麼樣子? – Zyren
'user_form.fields_for:addresses do | address_form |'將遍歷'addresses'關聯中的每個'Address'。你可以把他@ @ user.addresses.build'調用放在你需要空地址的任何地方。如果你使用的是'accep_nested_attributes_for',你的參數是'{'user'=> {'addresses_attributes'=> {'0'=> {:firstname =>'名字'...},'1'= > {:firstname =>'Second name'...}}}'你總是通過'@ user.update_attributes(params [:user])'來更新它。這是你正在尋找什麼,或者你只是想保存個人地址? –
當我調用'@ users.addresses.build'時,是否會清除當前存儲在用戶中的所有地址以創建空白地址?我想保留已經與用戶關聯的所有地址,並使用此表單提交將其他地址添加到用戶。如果我正在使用的視圖正在使用帳戶控制器,則表單將提交的操作將位於帳戶或用戶控制器中?我似乎很困惑我在哪裏調用'@ user.update_attributes(params [:user])' 我對rails非常陌生,所以任何額外的說明都會非常有幫助。謝謝。 – Zyren