Rails: добраться до родительского ресурса - PullRequest
0 голосов
/ 22 марта 2009

Я получил файл config / rout.rb примерно так:

  map.resources :categories, :shallow => true do |cat|
    cat.resources :entries,  :member => {:yes => :post, :no => :post }
  end

Моя цель - использовать кнопки «да» и «нет» в качестве кнопок, которые изменяют мои записи (это как игра, а «да» и «нет» - ответы на записи).

Мне бы хотелось, чтобы при нажатии на кнопку да или нет я возвращался к категории /: category_id / records, потому что там у меня есть красивый макет и т. Д.

Проблема в том, что я получил метод yes из entry /: entry_id, поэтому я потерял идентификатор категории, в которой находится эта запись, и я не знаю, как получить ссылку на категорию.

Думаю, я могу попробовать без использования параметра: shallow, чтобы я получил полный путь, но я, вероятно, собираюсь идти дальше в иерархии (записи могут иметь комментарии), и я хочу научиться с этой простой проблемой, как справиться с этой ситуацией ,

Ответы [ 3 ]

3 голосов
/ 22 марта 2009

Если ваши записи являются подресурсами ваших категорий, то, вероятно, между моделями существуют отношения родитель-ребенок, верно? Если это так, то вы можете использовать:

redirect_to category_entries_path(@entry.category)

в ваших yes и no методах.

0 голосов
/ 22 марта 2009

Вы пробовали resource_controller ? Я не работал с: мелкой опцией (и это решение, вероятно, без нее), но resource_controller поддерживает некоторые полиморфные ресурсы (вы можете иметь URL-адреса, такие как: / records, / category / 3 / records, / what / 12 / records так далее). Затем вы можете сгенерировать URL для записей с этим:

<%= link_to 'Entries', collection_path %> 

Но в случае ваших методов «да» и «нет» вам нужно всего лишь добавить:

redirect_to collection_path

в ответ на действия «да» и «нет».

0 голосов
/ 22 марта 2009

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

link_to "Yes", yes_entry([@category, Entry.new]), :method => :post

Хотя я не уверен, что это работает, иначе вы можете попробовать:

link_to "Yes", yes_entry(Entry.new, :category_id => @category), :method => :post
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...