将user_id添加到Message模型

时间:2011-05-21 04:10:22

标签: ruby-on-rails devise userid

我目前有一个简单的应用程序,包括通过设计和消息模型的用户身份验证(消息模型使用Jquery和Faye)。两者都独立工作,但我想在消息中添加user_id。

我已经使用关系更新了模式和模型,但是我无法输入必要的代码以使视图和控制器将关系输入到db中,同时保持jquery正常工作。我不确定最好的方法,但是在这里我试图创建一个隐藏的字段来拉取user_id,不确定这是否可能。这是适用的代码,任何帮助表示赞赏。

消息index.html.erb

<ul id="chat">
  <%= render @messages %>
</ul>

<%= form_for Message.new, :remote => true do |f| %>
<div class="field">
 <%= f.text_field :content %>
</div>
<div class="field">
 <%= f.hidden_field :user_id %>
</div>  
<div class="actions">
 <%= f.submit "Send" %>
</div>
<% end %>

create.js.erb for messages

 <% broadcast "/messages" do %>
 $("#chat").append("<%= escape_javascript render(@user.message) %>");
 <% end %>
 $("#new_message")[0].reset();

消息控制器

class MessagesController < ApplicationController
  def index
   if @authentications = current_user
    @messages = Message.all
   else
    redirect_to authentications_url
    flash[:notice] = "You need to sign in before answering questions"
   end
  end

 def create
  @user = User.find(params[:user_id])
  @message = @user.message.create(params[:message])
 end
end

我认为你有你需要的一切,但如果没有,请告诉我,我很乐意为你提供。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

要纠正的两件事,

1)使用用户关联在表单中创建消息实例(如果登录用户创建消息,则可能是current_user)

<%= form_for user.messages.new, :remote => true do |f| %> #// assuming its has many association

2)如果是has_many关联,则更改创建操作中的关联

@message = @user.messages.create(params[:message])