2012-04-13 24 views
1

我在兩個模型 - >用戶和聯繫人卡片之間有一個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的:用戶

+0

嘗試edit_user_contact_card_path(current_user.id)的創建行動build_contact_card,不知道是因爲我不知道你使用的身份驗證方案。同樣看看聯繫人卡片表格,我敢打賭,你已經編輯過每張卡片的記錄 – RadBrad 2012-04-15 15:28:32

+0

我嘗試過,並且由於某些原因它仍然通過創建路徑。 current_user返回當前用戶的用戶對象。 – 2012-04-17 17:12:37

回答

4
<%= form_for [current_user, current_user.build_contact_card], :url => user_contact_card_path(current_user) do |f| %> 

這是建立在每次修改時一個新的聯繫人卡片!將其更改爲

<%= form_for [current_user,contact_card], :url => user_contact_card_path(current_user) do |f| %> 

你會希望在用戶控制器可能

+0

謝謝!我不能相信我錯過了這一點。 – 2012-04-17 17:30:46