Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为用户更新单个属性_Ruby On Rails_Ruby_Forms_Update Attributes - Fatal编程技术网

Ruby on rails 为用户更新单个属性

Ruby on rails 为用户更新单个属性,ruby-on-rails,ruby,forms,update-attributes,Ruby On Rails,Ruby,Forms,Update Attributes,我有一个用户表,创建用户后,我想用下面的代码编辑一个属性。这是我的用户编辑视图: <h1>Please select below</h1> <%= form_for @user do |f| %> <div class="form-group"> <%= f.label :extra_activity %> <%= f.select(:extra_activity, [['P_Act', 1],['Ph_A

我有一个用户表,创建用户后,我想用下面的代码编辑一个属性。这是我的用户编辑视图:

<h1>Please select below</h1>

<%= form_for @user do |f| %>

  <div class="form-group">
    <%= f.label :extra_activity %>
    <%= f.select(:extra_activity, [['P_Act', 1],['Ph_Act', 2], ['C_Act', 3]], class: 'form-control', required: true)  %></br>
  </div>

  <%= f.submit 'Submit', class: 'btn btn-primary btn-lg' %>
<% end %>
用户参数如下所示:

  def user_params
     params.require(:user).permit(:first_name, :surname, :previous_award, :chosen_award, :email, :password, :password_confirmation, :extra_activity)
  end
最初创建用户时,
:extra_activity
设置为0。当用户单击编辑表单上的提交时,不会发生任何事情,用户将被重定向到
home\u路径
。我只需要将用户的
:extra_activity
属性更新为他们在表单中选择的任何内容。有人能告诉我哪里出了问题吗?不确定如何将所选号码保存为
:extra\u activity

更新:

class User < ActiveRecord::Base
   has_many :activities, dependent: :destroy
   has_many :weeks, dependent: :destroy
   authenticates_with_sorcery!
   validates :password, length: { minimum: 3 }
   validates :password, confirmation: true
   validates :email, uniqueness: true, email_format: { message: 'has invalid format' }
end
class用户
阅读您的评论并查看更新后,我想解决方案是添加:


验证:password,长度:{minimum:3},if::password

密码很可能以哈希形式存储,而不是在
password
列中。因此,如果重新加载用户,则不会设置属性。 验证应该是:如果设置了密码,那么请确保密码长度至少为3(相当短)


通过此控制器更新用户时,您应该确保存储的密码没有更改。

您可以发布即将通过的参数哈希吗?我不确定您所说的参数哈希是什么意思-我在哪里可以找到它?在更新操作中,执行a:p params.inspect获取从日志返回的任何内容。
参数:{“utf8”=>”✓“,”真实性令牌“=>”hgnJEi/uzuckBeX6D6d0sJwPswRdcKxq9U5ieGr32eX8OLb40Q2ITg9U6H/uonC8YnbUpGb6Hjwbz1WdVgqgbQ==”,”用户“=>,”额外活动“=>”1“,”提交“=>”提交“,”id“=>”1“}
这就是你的意思吗?@hade谢谢你的帮助。帕斯卡下面的答案奏效了!
class User < ActiveRecord::Base
   has_many :activities, dependent: :destroy
   has_many :weeks, dependent: :destroy
   authenticates_with_sorcery!
   validates :password, length: { minimum: 3 }
   validates :password, confirmation: true
   validates :email, uniqueness: true, email_format: { message: 'has invalid format' }
end