我正在使用设计并创建了一个模型配置文件。
我已将 has_one 关系添加到 user 和 belongs_to :user 到配置文件模型。我还在配置文件中添加了 user_id 列。
我还添加了
before_filter :create_profile
def create_profile
profile = Profile.create
end
在用户模型中。当新用户注册时,会创建一个新的配置文件。因此,如果用户 ID 为 10,这就是在配置文件中创建的内容
#<Profile id: 2, name: nil, created_at: "2013-08-17 06:44:33", updated_at: "2013-08-17 06:47:00", user_id: 10>
现在的问题是,我在 application.rb 中放置了一个编辑链接
<li><%= link_to "Profile".html_safe, edit_profile_path(current_user) %></li>
但它给出了错误
Couldn't find Profile with id=10
所以不是搜索 id=2,而是查看 user_id,如何解决这个问题?我确信我错过了一些非常小的东西,但不确定是什么。
编辑 - 错误来自编辑方法中的这一行 @profile = Profile.find(params[:id])
# profiles_controller.rb
def edit
@profile = Profile.find(params[:id])
end
我曾尝试使用 :user_id 和 :profile_id 但这也给出了错误“找不到没有 ID 的配置文件”
编辑2-
routes.rb 有,它几乎是空白的
resources :profiles
rake 路由输出(其他路径是设计标准路径)
profiles GET /profiles(.:format) profiles#index
POST /profiles(.:format) profiles#create
new_profile GET /profiles/new(.:format) profiles#new
edit_profile GET /profiles/:id/edit(.:format) profiles#edit
profile GET /profiles/:id(.:format) profiles#show
PUT /profiles/:id(.:format) profiles#update
DELETE /profiles/:id(.:format) profiles#destroy
profile_controller.rb ,其他5个方法是标准的一次
def edit
@user = current_user
@profile = @user.profiles.find(params[:profile_id])
end
def create
@profile = current_user.build_profile(params[:profile])
respond_to do |format|
if @profile.save
format.html { redirect_to @profile, notice: 'User profile was successfully created.' }
format.json { render json: @profile, status: :created, location: @profile }
else
format.html { render action: "new" }
format.json { render json: @profile.errors, status: :unprocessable_entity }
end
end
end