0

我不确定我的逻辑是否正确,但我正在这样做.. 我有管理,我可以手动添加客户,我有客户可以注册的前端。

客户控制器.rb

class CustomersController < Admin::AdminController
  def new
    @customer = Customer.new
    @customer.build_user
  end

 def create
  @customer = Customer.new(params[:customer])
  ...
 end

 ...
end

前端控制器.rb

class FrontendController < ApplicationController
  def show_signup
    @customer = Customer.new
    @customer.build_user
    render "signup"
  end

  def signup
    @customer = Customer.new(params[:customer])
    ...
  end
end

路线.rb

  match "signup" => "frontend#show_signup", :via => :get
  match "signup" => "frontend#signup", :via => :post

前端/signup.html.erb

    <%= form_for @customer, :url => url_for(:controller => 'frontend', :action => 'signup'), :html => { :class => 'form-horizontal' } do |f| %>

<%= f.label :name, :class => 'control-label' %>
<%= f.text_field :name, :class => 'text_field' %>

在显示 /signup URL 后,它会抛出一个错误

NoMethodError in Frontend#show_signup undefined method `name' for #<Customer id: nil ...

问题出在哪里 ?我认为可以从不受管理员保护的不同控制器访问客户模型。

模型:客户从用户继承,在管理部分创建效果很好。

用户.rb

belongs_to :customer, :dependent => :destroy

...

客户.rb

has_one :user
...

谢谢你

4

1 回答 1

0

好的,我忘记了它的嵌套形式,所以添加

<%= f.fields_for :user do |u| %>

signup.html.erb 解决了错误。

于 2013-08-16T16:59:06.060 回答