使用设计模型进行一对一映射

时间:2010-10-25 17:27:44

标签: ruby-on-rails

我正在尝试使用我的设计模型建立一对一关联,并且出于某种原因,我无法访问依赖模型的编辑路径。这就是我的意思:

我有一个用户和凭据模型的CRUD控制器。用户是一个设计模型。

class Credential < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_one :credential

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
end

我在名为Welcome的控制器中名为Home的操作下有一个主页。我的路线文件设置如下:

get "welcome/home"
devise_for :users
resources :users
resources :credentials

在主视图中,创建新用户后,我尝试使用

更新其凭据
<% if user_signed_in? %>
    <% current_user.build_credential unless current_user.credential %>
    <% if current_user.sign_in_count < 5 %>
        <%= link_to "update profile", edit_credential_path(current_user.credential) %>
    <% end %>
<% end %>

我在link_to行上收到错误消息:

No route matches {:action=>"edit", :controller=>"credentials", :id=>#<Credential id: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, user_id: 3>}

请帮忙。

感谢。

1 个答案:

答案 0 :(得分:0)

检查您的路线:     耙路线

您是否应确定用户是否已在视图中登录,这也值得怀疑。如果没有看到控制器,很难说这个。