коллекция_выбрать усечение - PullRequest
4 голосов
/ 12 мая 2011

Как я могу усечь значение в collection_select

<%= collection_select(:standard, :parent_id, Standard.all, :id, :value, {:include_blank => 'No Parent'} ) %>

Я бы хотел сократить значение, но получаю ошибки с этим:

<%= collection_select(:standard, :parent_id, Standard.all, :id, truncate(:value, :length => 40), {:include_blank => 'No Parent'} ) %>

Ответы [ 2 ]

5 голосов
/ 12 мая 2011

Вариант 1:

Добавьте в свою модель собственный метод, например, truncated_value, и используйте его вместо этого:

class Standard < ActiveRecord::Base
  include ActionView::Helpers::TextHelper

  def truncated_value
    truncate(value, :length => 40)
  end

  ...
  ...
  ...
end

Тогда по вашему мнению:

<%= collection_select(:standard, 
                      :parent_id, 
                      Standard.all, 
                      :id, 
                      :truncated_value, 
                      {:include_blank => 'No Parent'}) %>

Вариант 2:

Просто используйте вместо этого помощник по тегам select:

<%= select(:standard, 
           :parent_id, 
           Standard.all.collect{ |s| [truncate(s.value, :length => 40), s.id] },
           {:include_blank => 'No Parent'}) %>
1 голос
/ 24 мая 2015

Я решил эту проблему, передав text_method как proc следующим образом:

<%= collection_select(:standard, 
                  :parent_id, 
                  Standard.all, 
                  :id, 
                  proc {|st| st.value.truncate(40)}, 
                  {:include_blank => 'No Parent'}) %>

Для получения дополнительной информации я заметил, что collection_select получает значение как text_method,поэтому я посылаю блок кода, используя proc .

...