(Rails 4, acts_as_taggable_on): 在控制器中使用动态上下文

(Rails 4, acts_as_taggable_on): Using dynamic context in controller

acts_as_taggable_on 很棒,在使用静态上下文时非常容易使用。 但是,我正在尝试在依赖于模型属性之一的上下文中存储用户编辑的标签 select。

模型是 Ingredient,它有一个属性 center_id。我希望用户能够 select 标签及其上下文是基于 center_id 的字符串。

我需要帮助来获取控制器和视图的正确代码。

型号:

class Ingredient < ActiveRecord::Base
  belongs_to :center

帮手:

module IngredientsHelper
  def get_all_tags_for_center
    return Ingredient.tags_on(get_tags_context)
  end

  def get_tags_context
    "c#{@ingredient.center_id}_ingredient"
  end
end

视图 - 我试过了,但它可能不适合动态上下文:

<%= f.association :tag_list do %>
<%= f.select :tag_list, options_for_select(get_tags, @ingredient.tag_list_on(get_tags_context)), {}, {class: 'doselect2', multiple: true } %>
    <% end %>

管理员 - 需要您的帮助。

已解决。对于未来的读者:

控制器:

@ingredient.set_tag_list_on get_tags_context, params[:tags].join(",")
if @ingredient.update_attributes(ingredient_params)
  .
  .
end

查看:

<%= select_tag "tags[]", options_for_select(get_tags, @ingredient.tag_list_on(get_tags_context)), class: 'doselect2', multiple: true  %>