初期段階では、私の form_for は次のように見えました:
<%= form_for [:dashboard, @article], html: {class: 'article_form'} do |f| %>
に基づいていつ作成または更新されるかはすでにわかっています@article
。しかし、追加のパラメーターを追加する必要がありました。名前を付けましょうarticle_type
。そして、ルートに次のように追加しました:
resources :articles, path: 'articles/:article_type', constraints: { type: /image|video/ }
次に、form_for のこのセクションで、次のようなことができると述べました。
<%= form_for [:dashboard, @article], url: {article_type: 'image'}, html: {class: 'article_form'} do |f| %>
:controller
orを省略する限り、必要なものを取得するには:action
、それを正しく生成すると想定されます。でもそうじゃないらしい…。
私が得続けるものは次のとおりです。
@article が新しい場合
<form accept-charset="UTF-8" action="/dashboard/articles/image/new" class="article_form" id="new_article" method="post">
@article が存在する場合:
<form accept-charset="UTF-8" action="/dashboard/articles/image/new" class="article_form" id="edit_article_3" method="post">
/new
アクションが/dashboard/articles/image
create および/dashboard/articles/image/3
if edit用であると想定されているため、それは間違っています。
編集
私はそれを機能させる必要がある一時的な解決策
<%
named_route = if @article.new_record?
dashboard_articles_path(@article, article_type: params[:article_type])
else
dashboard_article_path(@article, article_type: params[:article_type])
end
%>
<%= form_for [:dashboard, @article], url: named_route, html: {class: 'article_form'} do |f| %>