Rails中的一对一关系

时间:2012-11-11 19:47:19

标签: ruby-on-rails activerecord

我正在尝试在Rails 3中实现简单的1对1关系,用户可以在其中连接银行帐户。

class User < ActiveRecord::Base
  has_one :bank
  accepts_nested_attributes_for :bank
  attr_accessible :bank_attributes
end

class Bank < ActiveRecord::Base
   belongs_to :user
end

路线

resources :users do
  resources :bank

现在,当我为users / 1 / bank / new中的用户构建一个新的银行对象时,这样:

def new
  @user = User.find(current_user.id)
  @bank = @user.build_bank
end

我的错误就是这样:

<%= simple_form_for(@bank) do |f| %>

错误是:

undefined method `banks_path' for #<#<Class:0x007fa7bd090f08>:0x007fa7c0545b40>

我的目标是为用户添加单独的表单以添加银行帐户信息。希望有人可以帮助我朝着正确的方向去做这件事。我也使用ActiveAdmin,与表单等的关系在那里工作正常。

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

由于银行嵌套在用户之下,您需要向用户提供表单:

<%= simple_form_for([@user, @bank]) do |f| %>

此外,您的路线文件应为

resources :users do
  resource :bank

这将为您提供用户的user_bank_path

答案 1 :(得分:0)

无论关联类型如何,您都需要以复数形式声明资源。

那么,您的资源声明

resources :users do
  resource :banks
end