Ruby on rails 将参数传递到文本方法的集合选择方法中
在上面的代码中,我需要向title方法传递一个参数。有没有办法用collection_select实现这一点Ruby on rails 将参数传递到文本方法的集合选择方法中,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,在上面的代码中,我需要向title方法传递一个参数。有没有办法用collection_select实现这一点 <%= collection_select(:catgory, :id, @categories, :id, :title, {}, data: { behavior: 'category_dropdown' }) %> 编辑: 查看集合的内部结构,选择text方法。它最终被传递给一个.send方法,该方法应该允许元素.send(:title,@program)。但
<%= collection_select(:catgory, :id, @categories, :id, :title, {}, data: { behavior: 'category_dropdown' }) %>
编辑:
查看集合的内部结构,选择text方法。它最终被传递给一个.send方法,该方法应该允许元素.send(:title,@program)。但是,我认为我仍然无法传递参数的原因是集合select将(:title,@program)读取为两个参数,而不是一个。使用
select
:
<%= collection_select(:catgory, :id, @categories, :id, (:title, @program), {}, data: { behavior: 'category_dropdown' }) %>
应该可以正常工作。这可以通过
集合\u选择来完成。如果您的模型有一个现有参数,您可以覆盖:
select "catgory", "id", @categories.map{|c| [c.title(@program), c.id]}, {}, data: { behavior: 'category_dropdown' }
例如,我这样做是为了有条件地将模型的name
属性多元化
f.collection_select( :your_model_id,
YourModel.all.map{|ym| ym.name = ym.custom_name(your_parameter); ym},
:id, :name,
{:selected => @model_instance.logic},
{:class => 'your class', :other => "..." } )
classmymodel
您有权在您的类别模型中访问@program吗?不幸的是,这是一个有很多关系的项目,因此我需要传递该项目,以知道将哪个项目放在标题中。没问题。我很高兴能找到解决办法。谢谢
class MyModel < ActiveRecord::Base
DEFAULT_NAME_COUNT = 99
def pluralized_name(n = DEFAULT_NAME_COUNT)
begin
return name.pluralize(n)
rescue
end
name
end
end