Ответ 1
Если вы посмотрите на свой вопрос
<%= form_for :article, url: article_path(@article), method: :patch do |f| %>
Проверьте свой url: article_path (@article), это помощник пути для действия вашей статьи и если вы проверяете свои маршруты рейка, которые он говорит для действия show, вам нужен запрос get
, но вы используете метод patch
или если вы пытаетесь отредактировать статью, то ваш помощник пути ошибочен и, следовательно, нет ошибки маршрута
Fix
Чтобы показать статью:
Если вы хотите показать статью, то вместо form_for use link_to, которая по умолчанию использует запрос get, form_for используется для создания статьи, а не для показа статьи
<%= link_to "Article", articles_path(@article) %>
Чтобы создать или отредактировать статью:
а. Использование полиморфных URL
Если вы хотите создать статью или отредактировать статью, вы можете использовать rails polymorphic urls и не нужно указывать опцию url, рельсы будут обрабатывать ее внутренне. Поэтому для создания и редактирования статьи вы можете использовать ту же форму
<%= form_for @article do |f| %>
// your fields
<% end %>
Для этого вам нужно иметь это в своем контроллере
def new
@article = Article.new
end
def edit
@article = Article.find(params[:id])
end
б. Использование path_helpers
Если вы будете указывать URL-адрес в своей форме, то он перенесет вас только на это действие и, следовательно, вам потребуются отдельные формы
Для создания:
<%= form_for :article, url: article_path do |f| %>
// your fields
<% end %>
Для редактирования:
<%= form_for :article, url: article_path(@article) do |f| %>
// your fields
<% end %>