2010-01-14 4 views
0

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

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

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

ответ

0

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

В файле routes.db, вы должны быть в состоянии определить, что-то вроде этого,

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

Затем, если вы запустите «реки маршруты» вы должны увидеть маршруты, подобных этой

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

вы можете позвонить по этому пути, на ваш взгляд, как так

class_students_path(class_id) 

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

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

EDIT --------------------------------------

По на ваш комментарий, вы не можете использовать map.resources по той или иной причине ...

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

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

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

+0

Но могу ли я использовать его без ресурсов? Из-за ошибки сервера, которую мы по-прежнему не можем исправить, и из-за другого разработчика, желающего перейти в старую школу (без ресурсов ...). – Muralha

+1

У вас нет ресурсов? Вы управляете древней версией Rails или чем-то еще? Какая ошибка сервера повлияет на это? –

+0

Чтобы исправить ошибку, администратор должен ее исправить вручную (рубин 1.9/rails 2.3.4 bug ... http://stackoverflow.com/questions/1681685/cant-work-with-more-recent-gems), и это своего рода чувствительный сервер, поэтому не удача, пока мы не закончим работу и переместите его на другой сервер. Другой разработчик хочет все, как рельсы 1.8.X ... (старая школа ... тоже не повезло) Могу ли я по-прежнему использовать ресурсы, не испортив остальные? И, кстати, спасибо за помощь Этан. – Muralha

0

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

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

/classes/1/people/ 

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

+0

Я думаю, что одна проблема, которую мы получили с вложенными ресурсами, заключалась в том, что один из наших методов не работал на не стандартный метод имен (editar == edit, или show == ver), а все остальные работали ... – Muralha