[strong parameters][form_with]소식에 사용자 정보 표시

개요



목적



프로게이트 이외의 방법(strong parameters)으로 투고 상세에 투고주(사용자) 정보를 기재하는 것.
(덧붙여서 프로 게이트는 이런 느낌 )

실현하고 싶은 것




각 action
하는 것(포인트)


새로운
from_with를 사용하여 게시.

create
strong parameters를 사용하여 처리.

show
게시물에 사용자 정보를 끌어온다.


이러한 흐름으로 진행해 갑니다.

완성 이미지




이미지에는 사용자 이름, 아이콘이 기재되어 있지만,
이번은 알기 쉽게 이해 받기 위해서 유저명만의 표시합니다.

환경



Ruby 2.5.6
Rails 5.2.3

전제


  • user의 데이블이 있어 「name」컬럼이 있는 것.
  • 투고 모델은 이번 comment 모델인 것.
  • devise를 도입하고 있는 것. (current_user를 사용하기 때문에)

  • strong parameters란?



    한마디로
    「웹 화면상에서 내부로 흘러 온 값을 안전하게 받는 구조」입니다.
    좀 더 씹어서 간단히 설명하면
    입력 폼으로 기술한 정보(이름, 메일 주소등)를 안전하게 백엔드에 건네주는 구조입니다.

    이번에는 그 스트롱 파라미터를 사용합니다.

    참고 URL
    Rails 초학자가 넘어지기 쉬운 「스트롱 파라미터의 구조」
    【Rails 입문】params 사용법 정리

    new (form_with를 사용하여 게시)



    여기의 목적은 from_with를 사용하여 게시 할 수 있도록합니다.

    comments/new.html.erb
    <%= form_with model: @comment, local: true  do |form| %>
     <%= form.text_area :content,class:"new_text" %>
    <% end %>
    
    

    이렇게 form_with를 사용하여 입력된 정보를 스트롱 매개변수로 수신할 수 있습니다.

    controller (strong parameters를 사용하여 처리)



    app/controllers/comments_controller.rb
        def new
          @comment = Comment.new
        end
    
        def create
          @comment = Comment.create params.require(:comment).permit(:content).merge(user_id: current_user.id)
    
        end
    
        def show
          @comment = Comment.find(params[:id])
          @user = User.find_by(id: @comment.user_id)
        end
    

    ★해설★



    여기서 포인트는 create 액션일 때,
    새로 입력한 특정 정보(이번에는 콘텐츠)만
    정보는 받지 않습니다~! 라고 하는 설정을 하고 있습니다.

    ★포인트★



    (1) 로그인 한 사용자 ID 읽기

    create 액션을 실행했을 때 입력된 content 이외에도 그 때
    로그인한 사용자 ID를 받도록 설정되어 있습니다.
    current_user는 스트롱 매개 변수에서 적용되지 않으므로,
    merge 메소드를 사용하여 받을 수 있습니다.

    (2) 로그인 한 사용자 ID 수신

    show 액션을 실행할 때,
    create 액션에서 읽은 사용자 ID를 연결합니다.

    참고 URL
    【Ruby on Rails】 스트롱 파라미터란 무엇인가?

    show (게시물에 사용자 정보를 당기기)



    app/views/comments/show.html.erb
    <%= @user.name%> #名前を表示
    <%=@comment.content%> #投稿内容を表示
    

    이제 게시물에 사용자 정보를 연결할 수있었습니다!

    마지막으로



    아직 공부가 부족한 곳이 있으므로,
    업데이트할 수 있던 지식은 추가로 기재해 갑니다.

    만약, 뭔가 수정점이 있으시면 코멘트 등
    죄송하지만 잘 부탁드립니다.

    좋은 웹페이지 즐겨찾기