我有这个表单_用于在我的用户#show 模板上的两个用户之间发送私人消息
<%= form_for([current_user, @message]) do |f| %>
<%= f.hidden_field :to_id, :value => @user.id %>
<div class="message_field">
<%= f.text_area :content, placeholder: "Send a private message..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<span class="message_countdown"></span>
<% end %>
在我的消息模型中,我有
belongs_to :to,
:class_name => 'User',
:foreign_key => :to_id
validates :content, presence: true, length: { maximum: 1000 }
validates :user_id, :to_id, presence: true
奇怪的是,第一次创建用户并导航到他们的节目资料时,
他们已经收到此错误
The form contains 2 errors.
* Content can't be blank
* To can't be blank
一旦我刷新页面,它们就会消失。并且表单功能正常。我似乎无法弄清楚出了什么问题。表单是否已经尝试自行自动提交?
在我的消息#create action 我有
def create
@message = current_user.messages.build
@message.to_id = params[:message][:to_id]
@message.user_id = current_user.id
@message.content = params[:message][:content]
if @message.save
flash[:success ] = "Private Message Sent"
end
redirect_to user_path(params[:message][:to_id])
end
如果这能说明问题的话。我手动分配@msessage 属性,因为我不想让:user_id attr_accessible。
但是,为什么第一次访问页面时验证已经失败?我不提交。一旦我离开页面并返回它,错误就不会再发生了。
这是我的用户#show action
def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
@current_user = current_user
if user_signed_in?
@message = current_user.messages.build(params[:messages], to_id: @user.id)
end
@influence = current_user.points
@badge_items = current_user.badges.to_a.map(&:name)
end
它与我的表演动作有关系吗?具体来说
@message = current_user.messages.build(params[:messages], to_id: @user.id)
那是调用创建吗?
帮助将不胜感激。谢谢你!
更新。我修好了它!
代替...
@message = current_user.messages.build(params[:messages], to_id: @user.id)
我已经做了
@message = current_user.messages.build
我猜这个问题更多的是......它正在寻找消息值和用户ID,还没有通过。谢谢你!