0

私のロジックが正しいかどうかはわかりませんが、これを行っています..手動で顧客を追加できる管理があり、顧客が登録できるフロントエンドがあります。

customers_controller.rb

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

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

 ...
end

fronted_controller.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 ...

問題はどこだ ?管理者保護されていない別のコントローラーから顧客モデルにアクセスしても問題ないと思います..

モデル:顧客はユーザーから継承し、管理セクションで作成するとうまくいきます。

user.rb

belongs_to :customer, :dependent => :destroy

...

customer.rb

has_one :user
...

ありがとうございました

4

1 に答える 1