rails의 redirect_to

Rails에서 페이지 전환 중에 배열 오류가 발생하여 상당히 고민했을 때의 메모

상황



레코드를 게시하고 게시 후 레코드 목록 화면으로 이동합니다.
레코드의 투고는 되어 있지만, 페이지 천이를 할 수 없다.
(새 페이지에서 크리타 액션을 통해 색인 페이지로 마이그레이션하는 동안 오류가 발생)

article_cnotroller.rb
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 페이지로 마이그레이션하려고 생각하고 위의 코드를 작성합니다.

이쪽도 간단하게, 투고 내용의 타이틀만을 표시시키는 코드로 하고 있습니다.

index.html.erb

<% @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이 있는 페이지에서 호출되는 것 같습니다.

꽤 참담한 오류 내용이었습니다.
재미있어! ! !

좋은 웹페이지 즐겨찾기