Ruby on Rails: я могу сделать “link_to” для вызова действия по созданию?

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

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

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

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

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

19
задан sjsc 23 April 2010 в 21:48
поделиться

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. То же самое касается удаления ссылок с опцией : подтвердить .

29
ответ дан 30 November 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: