2012-05-06 27 views
0

我有这样的form_for我的用户#发送两个用户之间的私人消息显示模板为什么表单自动提交在轨道上的显示动作?

<%= 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 

一旦我刷新页面,它们就会消失。并且表单功能正常。我似乎无法弄清楚什么是错的。该表单是否已经尝试自动提交?

我的消息#创建行动,我有

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。

但仍然,为什么验证已经失败,只是第一次去页面?我没有提交。一旦我离开页面并回到它,错误不再发生。

这里是我的用户#显示行动

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) 

是调用create吗?

帮助将不胜感激。谢谢!

UPDATE。我修好了它!

代替...

@message = current_user.messages.build(PARAMS [:消息],to_id:@ user.id)

我只是做

@message = CURRENT_USER .messages.build

我想问题是更多...它正在寻找消息的价值和用户ID,这还没有任何通过。谢谢!

回答

0

是,

@message = current_user.messages.build(params[:messages], to_id: @user.id) 

试图创建一个Message对象。

这里是一个指向has_many的Rails指南的链接,它描述了messages.build将如何创建新记录的具体细节。

http://guides.rubyonrails.org/association_basics.html#has_many-association-reference

+0

嗯但有没有办法不让它自动创建用户第一次访问该网页?每隔一段时间都能正常工作,但第一次访问它会导致错误 – Sasha