0

我正在构建一个具有典型用户模型和配置文件模型的简单应用程序。用户 has_one Profile 和 Profile belongs_to User。一切似乎都运行良好,因为我基本上遵循 Michael Hartl 教程。但是,当我尝试从配置文件表(显示操作)呈现某些内容的视图时,我收到一个错误(没有 id)并且我创建的配置文件记录被删除!

问题:

  1. 在我的 ProfilesController 中,我是否为我尝试渲染的简单视图正确定义了我的显示操作?

  2. 为什么简单地访问 url localhost/3000/profiles/1 会删除配置文件记录?我认为它与依赖破坏有关(b/c 删除将停止这种行为),但我想我想保持依赖破坏,对吗?

路线

resources :users
resources :profiles

楷模

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

Class Profile < ActiveRecord::Base
belongs_to :user

ProfilesController

def new
  @profile = current_user.build_profile
end

def create
  @profile = current_user.build_profile(params[:profile])
  if @profile.save
    flash[:success] = "Profile created dude!"
    redirect_to root_path
  else
    render 'new'
  end
end

def show
  @profile = Profile.find(params[:user_id])
end

查看 (profiles/show.html.erb)

<p>Display Name:  <%= @profile.display_name %></p>
4

1 回答 1

0

检查您的rake routes. 您会看到,对于您的Profile#show,您的 URL 结构如下:/profiles/show/:id
因此,参数,必须期待:id而不是:user_id

如果通过/profiles/show/3,您希望显示配置文件 3,则:

def show
  @profile = Profile.find(params[:id])
end
于 2013-04-29T17:45:57.493 回答