Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 Rails通过简单的表单设计注册实现了许多功能_Ruby On Rails_Ruby_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails Rails通过简单的表单设计注册实现了许多功能

Ruby on rails Rails通过简单的表单设计注册实现了许多功能,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,好的,我有一个用户: class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberabl

好的,我有一个用户:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :user_positions
  has_many :positions, :through => :user_positions
  accepts_nested_attributes_for :positions
end
class用户:用户\u位置
接受:位置的\u嵌套\u属性\u
结束
此用户可以有多个位置:

class Position < ActiveRecord::Base
  has_many :user_positions
  has_many :users, :through => :user_positions
end
class UserPosition < ActiveRecord::Base
  belongs_to :user
  belongs_to :position
  accepts_nested_attributes_for :position
end
类位置:user\u位置
结束
通过用户位置:

class Position < ActiveRecord::Base
  has_many :user_positions
  has_many :users, :through => :user_positions
end
class UserPosition < ActiveRecord::Base
  belongs_to :user
  belongs_to :position
  accepts_nested_attributes_for :position
end
class-UserPosition
我有一个表格可以将所有这些位置显示为复选框:

  <%= simple_form_for resource, as: resource_name, url: registration_path(resource_name) do |f| %>
    <%= devise_error_messages! %>
      <%= f.label :email %>
      <%= f.email_field :email, autofocus: true %>
      <%= f.label :password %>
      <%= f.password_field :password, autocomplete: "off" %>
      <%= f.label :password_confirmation %>
      <%= f.password_field :password_confirmation, autocomplete: "off" %>
      <%= f.association :positions, as: :check_boxes %>
      <%= f.submit "Sign up", class: "button" %>
      <%- if controller_name != 'sessions' %>
        or
        <%= link_to "Sign in", new_session_path(resource_name), class: "button" %>
      <% end -%>
  <% end %>
我正在使用Desive处理注册,但仅使用以下覆盖:

class RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters, :only => [:create]

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :position_ids) }
  end

end
类注册控制器[:create]
受保护的
def配置\u允许的\u参数
为(:注册){许可证(:用户名,:电子邮件,:密码,:位置ID)}设计参数
结束
结束

我通过cherry从这个网站上挑选了很多答案来构建这个网站……但由于某些原因,它仍然无法保存这些位置。我不知道我还能做什么。提前感谢。

由于
位置\u id
将作为数组传递,您需要更新
配置\u允许的\u参数,如下所示:

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :position_ids => []) }
  end

啊,是的,我现在想起来了……啊,我得回去再看一遍那些代码学校的视频了。太久了。我会试试看,如果有效的话,适当地标出答案是的,但仍然没有效果。创建一个用户很好…没有问题…但没有附加位置