[ROR]id값을 넘길때의 질문입니다.


  • Level 9

    현재 posts/show/1 페이지에서 create버튼을 눌러, 새로운 글을 생성하려고 합니다.
    넘어가는 인자에 1을 넘기고 싶습니다. 1을 어떻게 하면 넘길수있을까요? 예를들어서 히든값으로 넣는다고 하면
    <input type="hidden" value="" >

    이렇게 한다면 value안에 뭘 넣어야 주소뒤에 저 1을 넘길수있을까요?

  • Level 8

    @gamrom 앗 ㅋㅋ 저 @post는 Controller에서 Post 특정 ID에 대한 데이터 정보를 가진 변수라고 이해해주세요..ㅎ

    ### app/controllers/posts_controller.rb
    def new
        @post = Post.find(params[:id]
    end
    
    ### app/views/new.html.erb
    ## http://.../posts/new/1
    
    ... (내용 생략) ...
    <%= link_to "글 쓰기", new_post_path(@post.id), method: "post"  %>
    
  • Level 9

    @김철민 @post 가 뭔가요?

  • Level 8

    @김철민
    헉 4번 Controller 코드 잘못썼습니다.. 수정이 안돼서 다시 쓸게요..

    ### app/controllers/posts_controller.rb
    ## http://.../posts/create/2
    
    def create
    Post.create(title: "어쩌고저쩌고", content: "어쩌고저쩌고", parent_id: params[:parent_post_id])
    end
    

    막 이런형식으로 쓰는게 어떨까 싶기도?..
    이제 여기서 관건은 부모 post와 자식post에 대해 기반을 좀 만들어야 하는게 관건이네요..

    • 위 예시 코드를 보실 땐 id값이 넘어가는 것을 중심으로 봐주세요.
  • Level 8

    input type="hidden 방식도 하나의 방법이 될 수 있긴 하지만, 개발자도구에서 parameter 변조를 할 수 있다는 문제점이 있습니다.

    개인적으로 저는 라우터 규칙을 통해 넘기는게 좋을 것 같다고 생각합니다.

    • new : 새로운 게시글에 대해 사용자가 내용을 작성하는 페이지
    • create : 새로운 내용을 DB에 저장시키는 역할 담당
    1. routes.rb
    ### config/routes.rb
    get 'posts/new/:parent_post_id'
    post 'posts/create/:parent_post_id'
    
    1. views/show.html.erb
    ### app/views/show.html.erb
    ## http://.../posts/show/1
    
    ... (내용 생략) ...
    <%= link_to "새 글 쓰기", new_post_path(@post.id)  %>
    
    1. view/new.html.erb
    ### app/views/new.html.erb
    ## http://.../posts/new/1
    
    ... (내용 생략) ...
    <%= link_to "글 쓰기", new_post_path(@post.id), method: "post"  %>
    
    1. controllers/posts_controller.rb
    ### app/controllers/posts_controller.rb
    ## http://.../posts/create/2
    
    def create
    if params[:parent_post_id]
    Post.create(title: "어쩌고저쩌고", content: "어쩌고저쩌고", parent_id: params[:parent_post_id])
    end
    
  • Level 9

    아뇨 전혀 상관없습니다. 현재 주소의 id값만 파라미터로 받을수있으면 돼요!

  • Level 1

    @gamrom 쿼리스트링 말고 라우트 파라미터로 넘기고 싶은건가요?

ONLINE USERS

POPULAR TOPICS

SUGGESTED TOPICS