railsのredirect_to
Railsで、ページ遷移の際に、配列エラーが出て、かなり悩んだ際のメモ
状況
レコードを投稿し、投稿後にレコード一覧画面へ移行する。
レコードの投稿は出来ているが、ページ遷移が出来ない。
(newページから、cretaeアクションを通してindexページに移行する際にエラーが発生)
class ArticleController < ApplicationController
def index
@article = Article.all
end
def new
@article = Article.new()
end
def create
@article = Article.new(article_params)
if @article.save
render 'index'
else
render 'new'
end
end
private
def article_params
params.require(:article).permit(:main_text, :title, :header_photo, :maintext_photo)
end
end
簡単ではありますが、保存後にindexページに移行するようにと思い、上記のコードを記述しています。
こちらも簡単に、投稿内容のタイトルだけを表示させるコードにしています。
<% @article.each do |article| %>
<tr>
<td><%= article.title %></td>
</tr>
<% end %>
<br>
エラー内容はスクショの通りです。
エラーの内容は、eachが使えないと出ています。。
投稿内容のデバックを取っても、ちゃんと?配列が投稿できてるし、配列のエラーでは無いっぽい!けど何が原因か分からない!状態でした。
投稿は出来ているものの、createアクションを通した際に、
<% @article.each do |article| %>
配列が入っていないことは確かで、どこか怪しげ。
render 'index'
犯人はこいつだ!とまで分かると、エラーの内容はすぐわかりました!!
renderでアクションを呼び出すと、ページのデータのみが呼び出されるんです!
エラーページで見えなかったんですが、恐らく、http://localhost:3000/article/indeじゃなくて、http://localhost:3000にindex.html.erbのページが呼び出されている。はず。
なので、こう書き替えました。
class ArticleController < ApplicationController
def index
@article = Article.all
end
def new
@article = Article.new()
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to :action => 'index'
else
render 'new'
end
end
private
def article_params
params.require(:article).permit(:main_text, :title, :header_photo, :maintext_photo)
end
end
redirect_toでアクションを呼び出すと、URL付きのページで呼び出されるみたいです。
なかなか手ごたえのあるエラー内容でした。
楽しいーーー!!!
Author And Source
この問題について(railsのredirect_to), 我々は、より多くの情報をここで見つけました https://qiita.com/gussan-dayo/items/97c6e65c37702ab44407著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .