Сортировка по рельсам с помощью хелпера - PullRequest
0 голосов
/ 26 июля 2011

Я новичок в рубине на рельсах.

У меня есть приложения для подсчета расстояния между станцией метро и банкоматом. Есть две модели, имеющие отношение многие ко многим: Station, Cashpoint. И есть диспетчерское ШОУ, которое должно получить станцию ​​и показать банкоматы, чтобы рядом была станция.

class StationsController < ApplicationController
    def show
        @station = Station.find(params[:id])
        @cashpoints = @station.cashpoints.find(:all)

         respond_to do |format|
            format.html 
         end    
    end
end

Также есть помощник, который считает расстояние с помощью Google Directions API.

module StationsHelper
    def count_distance(origin,destination)
         ...
        return {:text => ... # 1 min
                , :value => ... # 60 (seconds)
                }
    end
end

Все это работает правильно.

Но мне интересно, как заказать банкоматы по: стоимости, возвращаемой StationsHelper?

Я пытался написать что-то в контроллере, похожее на:

@cashpoints = @station.cashpoints.find(:all, 
:order => count_distance(@station.address, cashpoint.address)[:value])

Но, очевидно, это не работает, потому что я знаю, как связать один объект Cashpoint к параметру count_distance.

Может быть, вы мне поможете, похоже, структура моего проекта не подходит для этого.

1 Ответ

0 голосов
/ 26 июля 2011

Попробуйте это:

@cashpoints = @station.cashpoints.find(:all).sort_by { |c| count_distance(c.address, @station.address) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...