【发布时间】:2012-04-13 00:57:59
【问题描述】:
我在两个模型之间有一个 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
【问题讨论】:
-
尝试edit_user_contact_card_path(current_user.id),不确定,因为我不知道你使用哪种身份验证方案。另请查看 ContactCard 表,我敢打赌,您“编辑”的每张卡都有记录
-
我试过了,但由于某种原因它仍然通过创建路径。 current_user 返回当前用户的用户对象。
标签: ruby-on-rails ruby-on-rails-3.2 form-for has-one