Rails - 显示嵌套资源的操作是删除记录?

时间:2013-04-30 04:12:13

标签: ruby-on-rails-3

我正在使用典型的用户模型构建一个简单的Web应用程序。档案模型。用户模型has_one profile&配置文件模型belongs_to用户。一切都很顺利,因为我基本上都遵循Michael Hartl的教程(除了他使用has_many进行微博)。

所以这是交易。我创建一个用户,然后创建一个配置文件。我知道两个记录都存在b / c我在我的sqlite3数据库浏览器中验证它们的存在。但是,只要我尝试通过访问 - >渲染节目视图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!"
    redirect_to root_path
  else
    render 'new'
  end
end

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

视图/简档/ show.html.erb

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

这是我尝试访问时收到的错误消息 - &gt;本地主机/ 3000 /简档/ 1

ActiveRecord::RecordNotFound in ProfilesController#show

Couldn't find Profile without an ID

0 个答案:

没有答案