2011-05-21 5 views
1

В настоящее время у меня есть простое приложение, которое включает аутентификацию пользователя через устройство и модель сообщений (модель сообщений использует JQuery и Faye). Оба работают нормально независимо, но я хотел бы добавить user_id в сообщения.Добавление 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 сообщений

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

Я думаю, что у вас есть все, что нужно было бы, но если нет, дайте мне знать, и я буду рад предоставить его вам.

Спасибо, всем.

ответ

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]) 
+0

Спасибо, так что для 1) Я сделал это current_user.messages.new, так как они вошли в систему и 2) он делает has_many, так что я сделал это изменение, а также. Проблема в том, что сообщения не отправляются, я получаю «ActiveRecord :: RecordNotFound (не могу найти пользователя без идентификатора): app/контроллеры/messages_controller.rb: 12: в' create 'error on сервер. – Igrabes

+0

Это связано с тем, что params [: user_id] - это nil use params [: message] [: user_id]. или вы можете попытаться создать сообщение, используя Message.create (params [: message]), это должно работать, потому что в сообщении есть user_id –

+0

Naren, спасибо, чувак, ты мужчина! – Igrabes

Смежные вопросы