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 %>