Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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_Forms_Has Many Through_Collection Select - Fatal编程技术网

Ruby on rails 有很多:通过和集合选择rails表单

Ruby on rails 有很多:通过和集合选择rails表单,ruby-on-rails,ruby,forms,has-many-through,collection-select,Ruby On Rails,Ruby,Forms,Has Many Through,Collection Select,我已经尝试了所有类似问题的解决方案,但还没有找到这个解决方案 我有很多:通过“临床医生”和“患者”之间的关系,加入了“护理组分配”模式。到目前为止,我尝试过的所有方法都无法将临床医生与患者的关联保存下来。我希望有一个患者能够有多个临床医生与其关联,并且临床医生将有多个患者 临床医生.rb(简化) 最后,我复制了在中所做的。也不是格式化为普通的集合\u select下拉列表,而是一个只有一名临床医生可供选择的列表 patientnew.html.erb表单 <%= form_for @pat

我已经尝试了所有类似问题的解决方案,但还没有找到这个解决方案

我有很多:通过“临床医生”和“患者”之间的关系,加入了“护理组分配”模式。到目前为止,我尝试过的所有方法都无法将
临床医生
患者
的关联保存下来。我希望有一个
患者
能够有多个
临床医生
与其关联,并且
临床医生
将有多个
患者

临床医生.rb(简化)

最后,我复制了在中所做的。也不是格式化为普通的
集合\u select
下拉列表,而是一个只有一名
临床医生
可供选择的列表

patientnew.html.erb表单

<%= form_for @patient do |form| %>

  <%= form.fields_for :user do |builder| %>
   <div class="form-group">
      <%= builder.label "Email or Username" %>
      <%= builder.text_field :email, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= builder.label :password %>
      <%= builder.password_field :password, class: "form-control" %>
    </div>
  <% end %>

  <div class="form-group">
    <%= form.label :first_name %>
    <%= form.text_field :first_name, class: "form-control", placeholder: "First name" %>
  </div>

  <div class="form-group">
    <%= form.label :last_name %>
    <%= form.text_field :last_name, class: "form-control", placeholder: "Last name" %>
  </div>

  <div class="form-group">
    <% Clinician.where(care_group_id: @care_group.id).each do |clinician| %>
      <%= check_box_tag "patient[clinician_ids][]", clinician.id, @patient.clinician_ids.include?(clinician.id), id: dom_id(clinician) %>
      <%= label_tag dom_id(clinician), clinician.full_name %><br>
    <% end %>
  </div>

  <%= form.button 'Create Patient', class: "btn btn-u btn-success" %>
<% end %>
  <div class="form-group">
    <%= collection_select(:patient, :clinician_ids, 
      Clinician.where(care_group_id: @care_group.id).order("first_name asc"), 
      :id, :full_name, {:selected => @patient.clinician_ids, :include_blank => true}, {:multiple => true}) %>
  </div>
  <div class="form-group">
    <% Clinician.where(care_group_id: @care_group.id).each do |clinician| %>
      <%= check_box_tag "patient[clinician_ids][]", clinician.id, @patient.clinician_ids.include?(clinician.id), id: dom_id(clinician) %>
      <%= label_tag dom_id(clinician), clinician.full_name %><br>
    <% end %>
  </div>
我计划在患者
显示
页面上显示与患者相关的
临床医生

患者show.html.erb

class Patient < ActiveRecord::Base
    belongs_to :care_group

    has_many :clinicians ,:through=> :care_group_assignments
    has_many :care_group_assignments

    belongs_to :user
    accepts_nested_attributes_for :user,  :allow_destroy => true
end
class CareGroupAssignment < ActiveRecord::Base
    belongs_to :clinician
    belongs_to :patient
end
def new
  @patient = Patient.new
  @user = User.new
  @patient.build_user

  @care_group = current_clinician.care_group
end

def create
  @patient = Patient.create(patient_params)
  @patient.care_group = current_clinician.care_group

  if @patient.save
    redirect_to patient_path(@patient), notice: "New patient created!"
  else
    render "new"
  end
end

def show
 @patient = Patient.find_by(id: params["id"])
end

private
 def patient_params
  params.require(:patient).permit({:clinician_ids => [:id]},:first_name,:last_name,:user_id,:care_group_id, user_attributes: [ :email, :password, :patient_id, :clinician_id ])
 end
<strong>Shared with:</strong>
 <% @patient.clinicians.each do |clinician| %>
  <%= clinician.full_name %><
 <% end %>
与以下人员共享:
<
如果我在数据库中设置种子,这是可行的,但是由于数据似乎没有被存储,所以没有显示任何内容

Rails 4.1.8、ruby 2.2.1p85、PostgreSQL

谢谢

在上找到了答案,我问:

控制器中的这一行存在问题:

params.require(:patient).permit({:临床医生\u id=>[:id]}…

应该是:


参数require(:patient).permit({:临床医生ID=>[]}…

“但是由于数据似乎没有存储,因此没有显示任何内容。”-强参数问题?可能是,但我没有得到通常的错误。没有错误。我在为
患者控制器显示的内容中添加了
患者参数
,您是否可以在创建请求中包含传递的参数。您还可以在save语句之前打印
@patient
的状态,以分割问题m无论是参数质量分配,还是在传递的参数中对数据库的持久化:
“临床医生ID”=>[“81”,“83”]
(通过复选框选择两名临床医生时)。之后会出现消息:
未经许可的参数:临床医生ID
通过将参数更改为have
{:clinician\u id=>[:id]}
而不是
:clinician\u id
。仍然没有插入值
<strong>Shared with:</strong>
 <% @patient.clinicians.each do |clinician| %>
  <%= clinician.full_name %><
 <% end %>