2013-12-06 4 views
0

Новое для Ruby и Rails, так что, возможно, я не ищу/не спрашиваю об этом правильно. Я использую ActiveAdmin камень и хочу, чтобы превратить это:Итерация по столбцам по модели active_admin

column :purchase_price, :sortable => :purchase_price do |piece| 
    div :class => "price" do 
    number_to_currency piece.purchase_price 
    end 
end 
column :appraised_value, :sortable => :appraised_value do |piece| 
    div :class => "price" do 
    number_to_currency piece.appraised_value 
    end 
end 
column :sale_price, :sortable => :sale_price do |piece| 
    div :class => "price" do 
    number_to_currency piece.sale_price 
    end 
end 

в этом:

price_array = [:purchase_price, :appraised_value, :sale_price] 
price_array.each do |p| 
    column p, :sortable => p do |piece| 
    div :class => "price" do 
     number_to_currency piece.p 
    end 
    end 
end 

... в интересах DRY.

Более длинное решение работает, но более короткий дает «NoMethodError in Admin :: Pieces # index», и я как бы не понимаю, что случилось. Какие-либо предложения?

+1

Попробуйте изменить деталь.p на кусок.сенса (p) – house9

+0

Спасибо! Мне нужно заглянуть в .send() для будущего. – jondelmil

ответ

0

Как и дом9, моя проблема заключалась в том, что я пытался позвонить piece.p, когда действительно это должно быть piece.send(p). Все еще не совсем понятно, почему вы не можете просто заменить все экземпляры p на петлю итератора, как я сделал изначально, но, возможно, кто-то еще может объяснить.

В любом случае, спасибо!

Смежные вопросы