Подтвердить что ты не робот

Ruby on Rails: могу ли я сделать ссылку "link_to" для вызова действия?

Как правильно вызвать действие create из 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 %>

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

4b9b3361

Ответ 1

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

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

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

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

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