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

时间:2016-03-31 07:18:52

标签: ruby-on-rails acts-as-taggable-on

使用静态上下文时,

acts_as_taggable_on非常棒,非常容易使用。 然而,我正在尝试将用户选择的标签存储在依赖于模型属性之一的上下文中。

模型为Ingredient,其属性为center_id。我希望用户能够根据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 %>

控制器 - 需要你的帮助。

1 个答案:

答案 0 :(得分:0)

解决。对于未来的读者:

控制器:

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