我面临的问题很可能与强参数有关。问题是,当我尝试编辑一些用户信息并更新它时,出现与此表单无关的错误。这种错误应该仅在注册或登录时才会弹出。
例如,这是我的数据库。然后我点击“编辑”。
编辑一些信息并提交后,弹出错误。
controllers/users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to [@user, @task], notice: "Thank you for signing up!"
else
render "new"
end
end
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to @user
else
render 'edit'
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to {|format| format.js }
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
end
views/user/edit.html
<h1>Editing user</h1>
<%= form_for :user, url: @user, method: :patch do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@user.errors.count, "error") %> prohibited
this task from being saved:
</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :first_name %><br>
<%= f.text_field :first_name %>
</p>
<p>
<%= f.label :last_name %><br>
<%= f.text_field :last_name %>
</p>
<p>
<%= f.submit %>
</p>
<%= link_to 'Back to List', users_path %>
<% end %>
models/user.rb
class User < ActiveRecord::Base
has_secure_password
EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :first_name, presence: true,
length: {maximum: 20}
validates :last_name, presence: true,
length: {maximum: 40}
validates :email, presence: true,
format: {with: EMAIL_REGEX},
uniqueness: {case_sensitive: false}
validates :password,
length: {within: 6..40}
has_many :tasks
end
我该怎么办?有人可以帮忙吗?
最佳答案
问题是不与强参数
有关。这是由于您对密码
进行了验证。
这个
validates :password,length: {within: 6..40}
应该是
validates :password,length: {within: 6..40}, on: :create
关于ruby-on-rails - 如何解决编辑对象时强参数矛盾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31503396/