Ich schreibe eine Chat-Seite für eine RoR-Website. Ich habe alles in HTML ausgearbeitet und versuche es mit Ajax zu implementieren. Es gibt ein Formular zur Übermittlung von Nachrichten. Das Formular liest <%= form_for(@chat, remote: true, :authenticity_token => true) do |f| %>
Meine gesamte Ansicht:
Battleriskopoloy - Kommunikation
[ . . . Kommunikation . . . ]
<% $chat_users.each do |user| %>
<% user = User.find_by_username(user) %>
<%= button_to user.username, flop_chat_path(user), :class => "select", :method => :get %>
<% end %>
<% $messeges.each do |i| %>
<% if i[1] == "from" %>
<%= i[0] %>
<% else %>
<%= i[0] %>
<%end%>
<%end%>
<%= form_for(@chat, remote: true, :authenticity_token => true) do |f| %>
<%= f.text_field :content, id: "compose" %>
<%= f.submit "Nachricht senden", id: "submit" %>
<% end %>
Der Controller:
class ChatsController < ApplicationController
$messeges = Array.new(10, " ")
def new
$messeges = Array.new
if $ruser != nil
$messeges = Array.new
Chat.all.each_with_index do |i, index|
if i.recipient == current_user.id && i.sender == $ruser.id
$messeges.push([i.content, "to"])
end
if i.recipient == $ruser.id && i.sender == current_user.id
$messeges.push([i.content, "from"])
end
end
end
$chat_users = Array.new
User.all.each do |user|
if user != nil && current_user != nil
if user.game_id == current_user.game_id && user.id != current_user.id
$chat_users.push(user.username)
end
end
end
@chat = Chat.new
end
def create
if $ruser != nil
@chat = Chat.new(chat_params)
@chat.recipient = $ruser.id
@chat.sender = current_user.id
@chat.save
end
redirect_to "/comms/new"
end
def flop
$ruser = User.find(params[:id])
$messeges = Array.new
Chat.all.each_with_index do |i, index|
if i.recipient == current_user.id && i.sender == $ruser.id
$messeges.push([i.content, "to"])
end
if i.recipient == $ruser.id && i.sender == current_user.id
$messeges.push([i.content, "from"])
end
end
redirect_to "/comms/new"
end
private
def chat_params
params.require(:chat).permit(:content)
end
end
Zusätzlich habe ich <%= csrf_meta_tags %>
in meiner application.html.erb
Ich habe online einige andere Dinge gefunden, bei denen Leute den gleichen Fehler mit Rails 4 erhalten haben, wenn sie von Ajax zur HTML-Übermittlung wechseln, aber das schien nur daran zu liegen, dass der :authenticity_token => true
Parameter nicht enthalten war. Jede Hilfe wird sehr geschätzt.