2013-04-30 3 views
0

나는 많은 Microposts를 가진 사용자가 있습니다. Microposts는 사용자에 속합니다. 지금은 사용자가 자신의 프로필에 게시 할 수 있습니다. 모든 사람들이 거기에 게시 할 수있게하려면 어떻게해야합니까? Micropost 테이블에 "sender_id"열을 추가 한 마이그레이션을 실행했지만, sender_id를 사용하여이 작업을 수행하는 방법을 파악할 수 없습니다. 나는 독서 덕분에 레일스가 처음이다.사용자가 다른 사용자의 프로필에 게시하도록 허용하는 방법

@user = User.find(73) #change so it posts to the user page im on 
@micropost = @user.microposts.build(params[:micropost]) 
@micropost.sender_id = current_user.id 
if @micropost.save 
    flash[:success] = "Music Posted!" 
    redirect_to :back 
end 

Micropost 양식 :

Micropost 컨트롤러 만들어 사용자로 USER_ID가 프로필과 SENDER_ID을 가진 사람이 할

<%= form_for(@micropost) do |f| %> 
    <div class="field"> 
    <%= f.text_area :comment, placeholder: "send a message" %> 
    </div> 
    <%= f.submit "Share", class: "btn btn-medium btn-primary" %> 
<% end %> 

Microposts 테이블에서를 그 다른의에 게시물 윤곽.

솔루션은 USER_ID의 PARAM 세트를 얻기 위해 micropost 양식에 추가 hidden_field_tag이었다 다음 @user = User.find (PARAMS [: USER_ID])

답변

1

당신이 당신의 코드를 변경할 수 :

@user = User.find(73) #change so it posts to the user page im on 
@micropost = @user.microposts.build(params[:micropost]) 
@micropost.sender = current_user # or whatever indicates your current user 
if @micropost.save 
    flash[:success] = "Music Posted!" 
    redirect_to :back 
end 
+0

@user 여기에 대해 알아 두어야 할 사항이 있습니까? – Jaqx

+0

이것은 사용하는 라우팅에 따라 다릅니다./users/: user_id/microposts와 같은 것을 가지고 있다면 "73"대신에'params [: user_id]'를 넣을 수 있습니다. 이 정보를 이미 검색 할 수 있는지 확인하기 위해 조치를 실행할 때 params 변수에 포함 된 내용을 확인해야합니다. –

+0

@user = User.find (params [: user_id])가 "사용자에게 ID가없는 사용자를 찾을 수 없습니다."를 반환했습니다. 나는 그것이 효과가있을 것이라고 생각했다. 게시물이 아직 만들어지지 않았기 때문에 user_id가 게시물에 대해 nil이 아니기 때문에 그렇습니까? – Jaqx

관련 문제