1

初期段階では、私の 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| %>

:controllerorを省略する限り、必要なものを取得するには: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/imagecreate および/dashboard/articles/image/3if 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| %>
4

0 に答える 0