Метод Rails как вложенный ресурс - PullRequest
0 голосов
/ 08 июня 2010

Меня интересует умный способ сделать это ...

У меня есть методы, которые возвращают значение при передаче объекта в качестве параметра, например:

Я бы хотел использовать те же методы, что и для вложенного ресурса, для вызова через jQuery / Ajax, например:

.load ( '/ местоположение / 8 / average_rainfall')

Я понимаю, как определить маршрут, но как сказать моему методу 'find' / location / 8 и использовать его в качестве параметра вместо @location, как и ожидалось?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 июня 2010

Не уверен, какова ваша точная ситуация, но один вариант будет использовать атрибут префикса данных (html5). Затем вы можете получить URL-адрес с помощью javascript.

Так что если на div:

<div data-rainfall_path="<%= average_rainfall_path(@location) -%>"></div>

Затем просто возьмите его с помощью jQuery, чтобы сделать запрос ajax.

Это умный способ сделать это.

0 голосов
/ 08 июня 2010

Кажется, вы пытаетесь использовать помощники вида и логику контроллера, где модель была бы идеальной. Вам следует прикрепить метод average_rainfall в вашей модели Location, а затем использовать его в представлении следующим образом:

<%= @location.average_rainfall %>

Тогда в вашем контроллере Locations используйте его, вызвав /locations/1/avg_rainfall из JavaScript.

def avg_rainfall
  @location = Location.find( params[:id] )

  render :json => { :avg_rainfall => @location.average_rainfall }
end
0 голосов
/ 08 июня 2010

Я просто передаю URL в JavaScript при генерации представления, что-то вроде этого:

var ajaxWidget = new AjaxWidget('<%= average_rainfall(@location) %>');

Это работает для меня, потому что мне не нужно передавать кучу URL-адресов. Я просто передаю базовый URL в объект, а затем добавляю имена действий в JavaScript по мере необходимости для выполнения моих вызовов Ajax. Проблема в том, что я не могу сохранить JavaScript полностью незаметным, поэтому я хотел бы получить лучший ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...