我使用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中的模型。
目前,我有三个模型,filterrific
,Video
,Tagging
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
答案 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上有很好的例子。