настраиваемое действие для вложенного ресурса без добавления в маршруты - PullRequest
2 голосов
/ 15 ноября 2010

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

карта. ресурсы: книга,: has_many =>: страницы

Я пишу действие с именем "turn", которое увеличивает page.count на 1. Как я могу вызвать это действие, используя link_to? Большое спасибо заранее.

1 Ответ

0 голосов
/ 05 декабря 2011

Сложно сказать, куда входит ваш page.count. В Railish вы найдете pages.count (обратите внимание на 's'). Кроме того, count (а также size) является атрибутом только для чтения для массивов и хэшей и т. Д. предоставляется ruby, который возвращает количество элементов. Вы не установили count.

Далее, я не уверен, где ваше действие turn должно жить, на Книге или на Странице? И что должно произойти после того, как оно делает то, что делает? Наконец, маршрут - это то, что делает действие действием - без него это просто функция.

На мгновение мы предположим, что вы пытаетесь сохранить количество посещений страницы в книге. Было бы лучше иметь переменную экземпляра с именем reads или times_viewed и т. Д. В вашей модели страницы. Предполагая, что ваша модель Book использует маршрутизацию покоя, в действии Book show вы создаете переменную экземпляра просматриваемой модели страницы и увеличиваете ее атрибут reads перед рендерингом представления.

Если вы пытаетесь создать ссылку, похожую на функцию «Мне нравится» в Facebook, то есть вы хотите обновить запись в таблице, не отправляя пользователя на другую страницу, вам нужно будет использовать link_to_remote* и немного JavaScript. В этом случае я бы просто отослал вас к Railscasts по этому вопросу.

* Я думаю, что с Rails 3 link_to_remote стало просто link_to с :remote => true.

...