В настоящее время у меня есть простое приложение, которое включает аутентификацию пользователя через устройство и модель сообщений (модель сообщений использует 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
Я думаю, что у вас есть все, что нужно было бы, но если нет, дайте мне знать, и я буду рад предоставить его вам.
Спасибо, всем.
Спасибо, так что для 1) Я сделал это current_user.messages.new, так как они вошли в систему и 2) он делает has_many, так что я сделал это изменение, а также. Проблема в том, что сообщения не отправляются, я получаю «ActiveRecord :: RecordNotFound (не могу найти пользователя без идентификатора): app/контроллеры/messages_controller.rb: 12: в' create 'error on сервер. – Igrabes
Это связано с тем, что params [: user_id] - это nil use params [: message] [: user_id]. или вы можете попытаться создать сообщение, используя Message.create (params [: message]), это должно работать, потому что в сообщении есть user_id –
Naren, спасибо, чувак, ты мужчина! – Igrabes