我创造了一个市场。我有设计处理的用户帐户。我想添加额外的用户属性。例如结算和送货地址(以及在大多数情况下都要处理这两种情况的主要地址)。
使用默认设置配置Devise。我使用this tool在users文件夹下的app控制器文件夹中生成设计控制器。因为我发现了很多人试图从不同的控制器/视图渲染表单。
我生成了user_address
class CreateUserAddresses < ActiveRecord::Migration
def change
create_table :user_addresses do |t|
t.string :address
t.string :city
t.string :state
t.integer :user_id
t.timestamps null: false
end
end
end
并且还在我的用户个人资料中添加了主要地址ID,以便稍后使用。
class AddPrimraryAddressIdToUsers < ActiveRecord::Migration
def change
add_column :users, :primary_address_id, :integer
end
end
现在我基本上想要将此user_address _form.html.erb集成到我的设计用户中。
./应用/视图/ user_addresses / _form.html.erb
./应用/视图/设计/注册/ edit.html.erb
<div>
<% if current_user.primary_address_id.blank? %>
Please create a primary address
<%= render :partial => '/user_addresses/form'%>
<% end %>
</div>
在编辑页面上创建和出错。
First argument in form cannot contain nil or be empty
<%= form_for(@user_address) do |f| %>
<% if @user_address.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user_address.errors.count, "error") %> prohibited this user_address from being saved:</h2>
<ul>
我的理解是因为user_address不在设计用户控制器中。如何将user_address创建的所有内容集成到设计视图和控制器中以清理目录。或者只是渲染user_address表单。
谢谢你