Отправка переменной через link_to без URL-запроса в Ruby on Rails - PullRequest
0 голосов
/ 14 января 2010

Я пытаюсь отправить переменную через link_to, без использования URL-запроса в Ruby on Rails, из представления индекса одного контроллера для использования в индексе другого контроллера.

В основном мне нужно передать Turma.id (идентификатор школьного класса) контроллеру Elementos_turma (люди в классе), чтобы я мог использовать его и отфильтровать индекс: ElementosTurma.find (: all,: condition = > {: turma_id => xxxxx}), чтобы показать народы выбранного класса.

Это возможно? Может быть, без использования переменной сеанса? Может быть, отправив переменную в метод на 1-м контроллере, чтобы отправить его другому контроллеру? (если да, то как? Не очень мудрый RoR ... :))

Ответы [ 2 ]

0 голосов
/ 14 января 2010

Вы не можете передавать данные по ссылке без включения этих данных в ссылку.

Однако, похоже, вам просто нужно использовать вложенные ресурсы. (Поскольку я говорю по-английски, я не буду заниматься другим языком и буду делать то, что мне нужно.) URL-адреса, на которые вы хотите отправлять людей, вероятно, должны выглядеть примерно так, если вы хотите RESTful:

/classes/1/people/

Это «способ Rails», указывающий, что вы хотите привлечь людей в класс # 1, и Rails предлагает встроенные методы маршрутизации, чтобы упростить это. См. Статью Rails Routing from Outside In в Руководстве по Rails.

0 голосов
/ 14 января 2010

Нет необходимости в специальном методе для получения необходимой информации, магия маршрутов подойдет.

В вашем файле rout.db вы должны определить что-то вроде этого:

map.resources :class, :has_many => :students

Тогда, если вы запустите 'rake маршруты', вы должны увидеть маршруты, подобные этой

class_students GET /classes/:class_id/students(.:format)  {:controller=>"students", :action=>"index"}

Вы можете назвать этот путь в вашем представлении следующим образом

class_students_path(class_id)

Тогда в вашем контроллере у вас будет доступ к params [: class_id]

Название маршрута не очень красивое, но это должно сработать.

РЕДАКТИРОВАТЬ --------------------------------------

Согласно вашему комментарию, вы не можете использовать map.resources по тем или иным причинам ...

 map.class_students '/:class_id/students', :controller => 'students', :action => 'index'

Это даст тот же маршрут, который доступен в вашем представлении, и тот же параметр в вашем контроллере.

При этом я не знаю, как ошибка сервера может помешать вам использовать map.resources

...