Ruby on Rails: Могу ли я сделать link_to для вызова действия создания? - PullRequest
19 голосов
/ 24 апреля 2010

Как бы я правильно назвал действие создания из link_to? Я использую REST (map.resources: recipes). Вот действие создания:

def create
  recipe = Recipe.create(:name => "French fries")
  redirect_to recipe
end

Например, я думал, что-то вроде этого может работать:

<%= link_to "Create a default recipe", recipe_path, :method => :post %>

Я не уверен, что это рекомендуемый (или даже правильный) способ сделать это. Есть идеи?

1 Ответ

29 голосов
/ 24 апреля 2010

Это должно сработать, если вы замените recipes_path на recipe_path.

Если вы посмотрите на вывод rake routes, вы должны увидеть что-то вроде:

recipes GET /recipes(.:format) {:controller=>"recipes", :action=>"index"}
        POST /recipes(.:format) {:controller=>"recipes", :action=>"create"}

Это подсказка, что хелпер URL ("recipes_path") для действия создания состоит из имени контроллера с _path в конце, используя :method => :post. Тот же путь с использованием :method => :get (который используется по умолчанию) сопоставляется с действием index.

Помните, что это не будет работать, если Javascript отключен, потому что Rails фактически добавляет обработчик on_click, который создает форму для выполнения POST. То же самое касается удаления ссылок с параметром :confirm.

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