前提・実現したいこと
現在SNSサイトを作っているのですが、formをパーシャルにしています。
article/1というurlの状態でformをcreateアクションに飛ばしたいのですが、editアクションに飛んでしまいます。
(article/1にrailsに用意されているform各種を置いた時点で、formのそれぞれのinputボックスにはarticle/1のtitleとbodyの情報が入力されている状態です。)
どうすればよろしいでしょうか?
該当のソースコード
view
1 <%= form_tag('/articles') do %> 2 <%= label :article,:title %><br> 3 <%= text_field :article,:title%> 4 </div> 5 <div class="form-group"> 6 <%= label :article,:body %><br> 7 <%= text_area :article,:body%> 8 </div> 9 <div class="form-group"> 10 <%= submit_tag "Create",class:"btn btn-primary"%> 11 </div> 12<%end%>
controller
1 def create 2 @article=Article.new(article_params) 3 @article.user_id=current_user.id 4 if @article.save 5 flash[:success]="successfully" 6 redirect_to article_path(@article) 7 else 8 flash[:error]="error" 9 redirect_to articles_path 10 end 11 end 12 13 def edit 14 @article=Article.find(params[:id]) 15 if @article.user_id == current_user.id 16 @article.save 17 else 18 redirect_to articles_path 19 end 20 end 21 22 def update 23 article=Article.find(params[:id]) 24 if article.update(article_params) 25 flash[:success]="successfully" 26 redirect_to article_path(article) 27 else 28 flash[:error]="error" 29 redirect_to article_path(article) 30 end
routes
1articles GET /articles(.:format) articles#index 2 POST /articles(.:format) articles#create 3 new_article GET /articles/new(.:format) articles#new 4 edit_article GET /articles/:id/edit(.:format) articles#edit 5 article GET /articles/:id(.:format) articles#show 6 PATCH /articles/:id(.:format) articles#update 7 PUT /articles/:id(.:format) articles#update 8 DELETE /articles/:id(.:format) articles#destroy
試したこと
form_forの仕様で、URLを元にアクションを判断していることを知ったので、urlでコントローラーとアクションを指定したり、form_with,form_tagを使ってみたのですが全てeditアクションになってしまいます。
追記
Railsの使用に関する質問だったので、ソースはいらないと判断してしまいました。
質問内容は、form_forやform_with,form_tagの挙動として、article/1のページででarticleを生成するformを作るとcreateではなくeditになってしまうのはどうすれば良いか、ということです。よろしくお願いします。