Форма регистрации администратора в рельсах - PullRequest
0 голосов
/ 26 июня 2018

У меня есть родительская таблица и в ней есть логическое поле admin. У меня есть страница регистрации администратора, где я хочу, чтобы скрытое поле для администратора было установлено как true. Пожалуйста помоги. Я попробовал шаг ниже. пожалуйста, исправьте это, поскольку это не работает.

<div class='row'>
    <div class= 'col-xs-12'>
      <%= form_for(@parent, :html => { multipart: true, class: "form-horizontal", role: "form"}) do |f| %>
        <div class = "form-group">
          <div class="control-label col-sm-2">
            <%= f.label :email, class: "required" %>
          </div>
          <div class="col-sm-8">
            <%= f.email_field :email, class: "form-control", placeholder: "Enter email", required: true %>
          </div>
        </div>
        <div class = "form-group">
          <div class="control-label col-sm-2">
            <%= f.label :password, class: "required" %>
          </div>
          <div class="col-sm-8">
            <%= f.password_field :password, class: "form-control", placeholder: "Enter password", required: true %>
          </div>
        </div>
        <div class = "form-group">
          <div class="control-label col-sm-2">
            <%= f.label :password_confirmation, class: "required" %>
          </div>
          <div class="col-sm-8">
            <%= f.password_field :password_confirmation, class: "form-control", placeholder: "Re-enter password", required: true %>
          </div>  
        </div>
        <%= f.hidden_field :admin, :value => true %>
        <div class="form-group">
          <div class="col-sm-10">
            <%= f.submit 'Sign up', class: 'btn btn-primary btn-lg' %>
          </div>
        </div>
      <% end %>
    </div>
  </div>

Родительский контроллер

    def addusers
        @parent=Parent.new
    end

Обновлен родительский контроллер

    def new
        @parent = Parent.new
        @parent.secondaryparents.build
        add_breadcrumb "Home", :root_path
        add_breadcrumb "Sign up"
    end

    def addusers
        @parent=Parent.new
    end

    def create_users
        @parent=Parent.new(parent_params)
        @parent.admin = true
        if @parent.save
            ParentMailer.registration_confirmation(@parent).deliver
            flash[:success] = "Please ask user to confirm email address to continue"
            redirect_to main_admin_path
        else
            flash[:danger] = "There was an error with registering. Try again"
            redirect_to main_admin_path
        end
    end

def create
        @parent = Parent.new(parent_params)
        if @parent.save
            ParentMailer.registration_confirmation(@parent).deliver
            flash[:success] = "Please confirm your email address to continue"
            redirect_to root_path(@parent)
        else
            flash[:danger] = "There was an error with registering. Try again"
            redirect_to signup_path
        end
    end

Маршруты

resources :parents do
    resources :children do
        resources :fundings
        end
    end
end

get 'signup', to:'parents#new'
get 'login', to: 'sessions#new'
get 'usersignup', to:'parents#addusers'
post 'usersignup', to:'parents#create_users'

resources :parents, except: [:new] do
    member do
        get :confirm_email
    end
end

1 Ответ

0 голосов
/ 26 июня 2018

Удалить скрытую строку со страницы HTML, не нужно f.hidden_field :admin, :value => true

form_for

form_for(@parent, url: usersignup_path, 
        :html => { multipart: true, class: "form-horizontal", role: "form"}) do |f|

Добавить к маршрутам:

post 'usersignup', to:'parents#create_users'

Контроллер:

def create_users
   @parent = Parent.new(parent_params)
   @parent.admin = true
   if @parent.save
      #do yr logic here
   else
      redirect_back(fallback_location: "/", flash: { danger: "smth went wrong.." })
   end
end

def parent_params
    params.require(:parent).permit(:email, :password, :password_confirmation)
end
...