如何在rails中使用filterrific gem?

时间:2016-01-17 23:37:31

标签: ruby-on-rails filterrific

我使用def paditem(item, length): return item + ('0' * (length - len(item))) if len(item) < length else item def padlist(somelist, length): return map(lambda x: paditem(x, length), somelist) # Test Code: myList = ["0","12","221","3344"] results = padlist(myList, 4) for result in results: print result gem来过滤rails中的模型。

目前,我有三个模型,filterrificVideoTagging

Video.rb

Tag

由于很难使用has_one :tagging has_one :tag, through: :tagging scope :by_tag, -> (tag_id) {joins(:tagging).where(taggings: {tag_id: tag_id})} 来执行过滤(请参阅StackOverflow),因此我在联接表tag.name中使用tag_id来执行过滤。

Tagging.rb

tagging

Tag.rb

belongs_to :video
belongs_to :tag

目前,has_many :taggings has_many :videos, through: :taggings 正在运作,但我不知道如何编写控制器查看

在控制器中:如何编写scope方法?

在视图中:如何编写select_options方法?目前,我这样写,但没有工作:

select

1 个答案:

答案 0 :(得分:1)

转到select代码帮助程序的选择选项需要看起来像一对[ [ name, id ], [ name, id ] ... ]对。尝试这样的事情:

f.select(:by_tag, Tag.all.map {|tag| [tag.name, tag.id]}, { include_blank: '- Any -' }, :class=>'form-control')

或者为了使事情变得更加清洁,您可以使用rails collection_select帮助程序,例如

f.collection_select(:by_tag, Tag.all, :id, :name, prompt: '- Any -', class: 'form-control')

第二个需要调整,这取决于你的控制器使用空白选项做什么。

APIDock ActionView::Helpers::FormOptionsHelper#select上有很好的例子。