Ruby on rails 将参数传递到文本方法的集合选择方法中

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)。但

在上面的代码中,我需要向title方法传递一个参数。有没有办法用collection_select实现这一点

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