我在兩個模型 - >用戶和聯繫人卡片之間有一個has_one/belongs_to關聯。雖然我能夠爲用戶創建聯繫人卡片,但每當我嘗試編輯卡片時,都會從ContactCardsController中調用創建操作,而不是更新(由於每次都有不同的成功消息,因此我可以說)。它改變了聯繫卡的屬性,我不得不說。我大部分都很開心,但我寧願修補我對軌道路徑和關聯的理解上的任何空白。我錯過了什麼?爲什麼它不使用我期望的操作?此外,如果您知道網上或github上的任何相關示例,我都可以研究,我全都聽過。謝謝!在Rails中用form_for編輯has_one對象
聯繫卡控制器...
class ContactCardsController < ApplicationController
def create
current_user.build_contact_card(params[:contact_card])
if current_user.contact_card.save
flash[:success] = "Contact Card created!"
redirect_to '/account'
else
flash[:error] = "Fail!"
redirect_to '/account'
end
end
def update
if current_user.contact_card.update_attributes(params[:contact_card])
flash[:success] = "Profile updated."
redirect_to '/account'
else
flash[:error] = "Fail!"
redirect_to '/account'
end
end
鏈接編輯形式...
<%= link_to "Edit Profile", edit_user_contact_card_path(current_user) %>
編輯形式...
<%= form_for [current_user, current_user.build_contact_card], :url => user_contact_card_path(current_user) do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.submit "Save Contact Details", :class => "btn btn-large btn-primary" %>
<% end %>
相關路線...
resources :users do
resource :contact_card
.....
用戶模型HAS_ONE:contact_card和ContactCard模型belongs_to的:用戶
嘗試edit_user_contact_card_path(current_user.id)的創建行動build_contact_card,不知道是因爲我不知道你使用的身份驗證方案。同樣看看聯繫人卡片表格,我敢打賭,你已經編輯過每張卡片的記錄 – RadBrad 2012-04-15 15:28:32
我嘗試過,並且由於某些原因它仍然通過創建路徑。 current_user返回當前用戶的用戶對象。 – 2012-04-17 17:12:37