1

我有两个具有一对一关联的模型(用户和个人资料)。

class Profile < ActiveRecord::Base
  attr_accessible :language_tokens, :tele, :languages, :serviceDesc, :service
  belongs_to :user
  ...

class User < ActiveRecord::Base
  has_one :profile, dependent: :destroy

该配置文件是使用以下内容构建的:

@profile = @user.build_profile(session[:form_params])

我的个人资料编辑表单只是一个标准表单,在提交时应将其路由到我的个人资料更新操作。

<%= form_for @profile do |f| %>
  <%= render 'shared/host_information', :f => f%>
  <%= render 'shared/service_information', :f => f%>
  <%= f.submit 'done', class: "bnt"%>
<% end %>


HTML form:
<form id="edit_profile_6" class="edit_profile" method="post" action="/profiles/6" accept-charset="UTF-8">

但是,由于某些奇怪的原因,表单正在提交给用户更新,而不是预期的个人资料更新。我在用户更新中放置了一个调试点,您可以看到参数确认目标控制器确实应该是profiles_controller。

/railsapp/loco_app/app/controllers/users_controller.rb:82
@user = User.find_by_id(params[:id])
(rdb:15) p params
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"qXx5EWwIWASiARKVFE7eDd43gHnBSmK538YAXeesDyI=", "profile"=>{"country_id"=>"8", "city_id"=>"22", "tele"=>"", "language_tokens"=>"18,14", "service"=>"9",  },
"commit"=>"done", "action"=>"update", "controller"=>"profiles", "id"=>"6"}
(rdb:15)

以下是相关路线:

profiles POST   /profiles(.:format)                   profiles#create
new_profile GET    /profiles/new(.:format)               profiles#new
edit_profile GET    /profiles/:id/edit(.:format)          profiles#edit
profile PUT    /profiles/:id(.:format)               profiles#update

users GET    /users(.:format)                          users#index
POST   /users(.:format)                          users#create
new_user GET    /users/new(.:format)                      users#new
edit_user GET    /users/:id/edit(.:format)                 users#edit
user GET    /users/:id(.:format)                      users#show
PUT    /users/:id(.:format)                      users#update
DELETE /users/:id(.:format)                      users#destroy

调试此问题的最佳方法是什么?这是一对一关联的一些奇怪的副作用还是这里有错误?我正在使用导轨 3.2.2。

*更新* 所以这绝对看起来像一个错误。我重新生成了我的控制器(同名)并复制了相同的代码,现在它可以在没有任何其他更改的情况下工作。我仍然想知道这是否是一个已知问题以及将来如何调试此类问题。

4

0 回答 0