イム私は私のユーザーにレール、単純なプライベートメッセージングシステム</p> <p>を作成しようとしているのid属性コントローラで
resources :users do
resources :messages
end
ネストされたルートを持っているが、ページを表示し、私が持っています...
<%= form_for([current_user, @message]) do |f| %>
<div class="field">
<%= f.text_area :content, placeholder: "Send a private message..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
ここで、現在のユーザーは、現在見ているユーザーにプライベートメッセージを送信できます。私は持っている私のmessage.rb上
...
belongs_to :user
と私が持っているuser.rbで...私のユーザーコントローラ上
has_many :messages
は私が
def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
if user_signed_in?
@message = current_user.messages.build(params[:messages])
end
end
を持つ作用を示します
ユーザーが自分のショーテンプレートで[送信]ボタンを押すと、自分のメッセージ作成アクションに移動しますが、ユーザーのIDを取得できませんUSER_ID IDで、私にある現在のユーザー(ある:私は
[#<Message id: nil, content: nil, user_id: 1, to_id: nil, created_at: nil, updated_at: nil>]
...を見ている(またはに送信しようとしている)私は私のメッセージ変数をプリントアウトし
、それが言いました私はそれを取得する方法を教えてください誰かが私に教えてください?私はIDを隠しフィールドとして渡すことしか考えられませんが、それは安全ではないと聞きました。
助けていただければ幸いです。おかげ
更新:@Andrew
うーん、実際にその興味深い私がしなければ...
@message = current_user.messages.build(to_id: @user.id)
と私は
<%= f.hidden_field :to_id, :value => @user.id %>
に渡したので、私は
Can't mass-assign protected attributes: to_id.
を取得します
誰でも理由を知っている?
これは悪いです:to_id attr_accessible then? – Sasha
待機nvm。私は実際にattri_accessibleにする必要はありません。なぜ私はそれを前にしなければならなかったのか分からない。私は何か間違っている必要があります。助けてくれてありがとう! – Sasha