多态复选框创建操作

时间:2014-05-25 23:52:45

标签: ruby-on-rails ruby-on-rails-3.2 polymorphic-associations

我有播放列表项的多态关联。类型可以是"课程"或者"提示"。在我看来,我有一个复选框列表,因为您应该能够一次向播放列表添加多个项目。两个"课程"和"提示"在同一时间。

我遇到的问题是让创建操作知道每个项目添加的类型。怎么能在控制器中写出来?目前,每个新条目都具有"课程"因为这是第一个列出的。

CONTROLLER

params[:playlistings][:playlistable_ids].each do |playlistable|
  @playlist.playlistings.create(:playlistable_id => playlistable, :playlistable_type => params[:playlisting][:playlistable_type])
end

VIEW

<%= simple_form_for @playlistings do |f| %>
  <%= f.select :playlist_id, current_user.playlists.all.collect {|p| [ p.name, p.id ] }, {}, :required => true, :class => "form-control" %>
  <% for lesson in @lesson.sub_category.lessons.order(:position) %>
    <%= check_box_tag "playlistings[playlistable_ids][]", lesson.id %>
    <%= f.hidden_field :playlistable_type,:value => "Lesson" %>

    <% for cue in lesson.cues %>
      <%= check_box_tag "playlistings[playlistable_ids][]", cue.id %>
      <%= f.hidden_field :playlistable_type,:value => "Cue" %>
    <% end %>
  <% end %>

1 个答案:

答案 0 :(得分:0)

在这里,您可以在模型中创建一个虚拟属性,并使用回调更新这些记录。

您可以在播放列表模型中将cue_ids创建为属性访问者

attribute_accessor :cue_ids 

before_save :cue_ids

保存之前,您可以使用此cue_ids并更新其他模型。您可以创建lesson_ids和cue_ids作为attr_accesor。

在这里你可以获得 playlistings.lesson_ids和playlistings.cue_ids

相关问题