我在两个模型之间有一个 has_one / belongs_to 关联-> 用户和 ContactCard。虽然我可以为用户创建联系人卡片,但每当我尝试编辑卡片时,都会从 ContactCardsController 调用创建操作,而不是更新(我可以判断,因为每个卡片都有不同的成功消息)。我不得不说,它改变了联系人卡片的属性。我很高兴它的工作,但宁愿修补我对 Rails 路径和关联的理解中的任何差距。我错过了什么?为什么不使用我期望的动作?此外,如果您知道我可以研究的网络或 github 上的任何相关示例,我会全神贯注。谢谢!
联系卡控制器...
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
.....
User 模型 has_one :contact_card 和 ContactCard 模型 belongs_to:user