我已经阅读了其他主题,但我仍然无法理解。
两个模特,用户和厨师。
当我注册厨师时,它不会保存他们的first_name。下面是代码。
- Application_Controller
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:first_name, :email) }
end
end
- 新主厨表格
<%= form_for(@chef) do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.file_field :photo%>
<% end %>
- chef_controller
class ChefsController < ApplicationController
before_action :set_chef, only: [:show, :edit]
# GET /chefs
def index
@chefs = Chef.all
end
# GET /chefs/1
def show
end
# GET /chefs/new
def new
@chef = Chef.new
end
# GET /chefs/1/edit
def edit
end
# POST /chefs
def create
@chef = Chef.new(chef_params)
if @chef.save
redirect_to @chef, notice: 'Chef was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /chefs/1
def update
if @chef.update(chef_params)
redirect_to @chef, notice: 'Chef was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /chefs/1
def destroy
@chef.destroy
redirect_to chefs_url, notice: 'Chef was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_chef
@chef = Chef.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def chef_params
params[:chef]
end
end
答案 0 :(得分:2)
如果你看一下你的问题就说
When I register for chefs it does not save their first_name.
因此,当您创建新厨师时,问题就会出现,因此在您的情况下,当主厨注册时您需要允许注册的额外属性而不是登录。
尝试:
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email) }
end
答案 1 :(得分:0)
这里是我的简单解决方案,如果你想要注册的其他字段/新设计。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :last_name,
:email, :phone_number, :company, :address, :city, :zipcode, ])
#in keys you list all the input you want to accept.
end
end