collection_select截断

Pau*_*aul 4 truncate ruby-on-rails-3

如何截断collection_select中的值

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

我希望缩短价值,但是我遇到了错误:

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

Dyl*_*kow 5

选项1:

向您的模型添加自定义方法,类似于truncated_value,并使用它:

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

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

  ...
  ...
  ...
end
Run Code Online (Sandbox Code Playgroud)

然后在你看来:

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

选项2:

只需使用select标记助手:

<%= select(:standard, 
           :parent_id, 
           Standard.all.collect{ |s| [truncate(s.value, :length => 40), s.id] },
           {:include_blank => 'No Parent'}) %>
Run Code Online (Sandbox Code Playgroud)