1

我试图在 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,并且与表单等的关系在那里工作得很好。

任何帮助表示赞赏!

4

2 回答 2

1

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

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

此外,您的路线文件应该是

resources :users do
  resource :bank

这将为您提供用户的 user_bank_path

于 2012-11-11T20:04:48.840 回答
0

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

所以,你的资源声明

resources :users do
  resource :banks
end
于 2012-11-14T14:20:32.143 回答