目前使用 Rails 3.2 和 Carrierwave。
我有多个文件设置,但它需要多个文件字段,但我只想要一个文件字段。如果浏览器不支持 HTML5 多重属性,我将提供它作为默认值。
控制器
def new
@ad = Ad.new
5.times { @ad.images.build } // provides multiple file fields in the view.
end
def create
ad = Ad.new(params[:ad])
user = User.find(session[:user_id])
if user.ads << ad
flash[:notice] = "Ad successfully saved."
redirect_to ad_listing_path(ad.id, ad.slug)
else
render :new, :alert => "Ad was not saved."
end
end
Run Code Online (Sandbox Code Playgroud)
看法
<%= f.fields_for :images do |a| %>
<% if a.object.new_record? %>
<%= a.file_field :image, :multiple => true %><br>
<% end %>
<% …Run Code Online (Sandbox Code Playgroud) 我有一系列哈希:
array = [
{
id: 1,
name: "A",
points: 20,
victories: 4,
goals: 5,
},
{
id: 1,
name: "B",
points: 20,
victories: 4,
goals: 8,
},
{
id: 1,
name: "C",
points: 21,
victories: 5,
goals: 8,
}
]
Run Code Online (Sandbox Code Playgroud)
要使用两个键对它们进行排序,我会:
array = array.group_by do |key|
[key[:points], key[:goals]]
end.sort_by(&:first).map(&:last)
Run Code Online (Sandbox Code Playgroud)
但是在我的程序中,sort标准存储在数据库中,我可以将它们存储在一个数组中,例如:["goals","victories"]或["name","goals"].
如何使用dinamic键对数组进行排序?
我尝试了许多方法,没有这样的成功:
criterias_block = []
criterias.each do |criteria|
criterias_block << "key[:#{criteria}]"
end
array = array.group_by do |key|
criterias_block
end.sort_by(&:first).map(&:last)
Run Code Online (Sandbox Code Playgroud)