Ich schreibe eine Chat-Seite für eine RoR-Site. Ich habe alles in HTML ausgearbeitet und versuche es mit Ajax zu implementieren. Es gibt ein Formular für die Übermittlung von Nachrichten. das Formular-Tag liest <%= form_for(@chat, remote: true, :authenticity_token => true) do |f| %>
Ruby-Form mit Ajax mit Remote: True gibt ActionController :: InvalidAuthenticityToken Fehler. Klassische Einreichung nicht
Meine gesamte Ansicht:
<!DOCTYPE html>
<html>
<head>
<title>Battleriskopoloy - Communications</title>
</head>
<body>
<br>
<div id="heading_1" align="center">
<br><span id="title"><strong>[ . . . Communications . . . ]</strong></span>
</div><br>
<div id="sidebar"><br>
<% $chat_users.each do |user| %>
<% user = User.find_by_username(user) %>
<%= button_to user.username, flop_chat_path(user), :class => "select", :method => :get %>
<% end %>
</div>
<div id="display">
<% $messeges.each do |i| %>
<% if i[1] == "from" %>
<p style="color:#000000; text-align:right; margin-right:5%;font-family:courier"><%= i[0] %></p>
<br>
<% else %>
<p style="color:#FF0000; text-align:left; margin-left:5%; font-family:courier"><%= i[0] %></p>
<br>
<%end%>
<%end%>
</div>
<div id="textfield">
<%= form_for(@chat, remote: true, :authenticity_token => true) do |f| %>
<%= f.text_field :content, id: "compose" %>
<br>
<br>
<%= f.submit "Send Messege", id: "submit" %>
<% end %>
</div>
</body>
</html>
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 meinem application.html.erb
ich einige gefunden hatte, andere Dinge online über Leute, die den gleichen Fehler mit Rails 4 beim Wechsel von Ajax zu HTML-Einreichung bekommen, aber das schien nur, weil sie hatte den :authenticity_token => true
Parameter nicht enthalten. Jede Hilfe wird sehr geschätzt.
Ich weiß nicht einmal, wo die Quelle für dieses Projekt jetzt. Ich erinnere mich, obwohl ich definitiv aufgegeben habe. Wirklich schätze die Antwort obwohl! – obventio56
@techdreams, warum Schienen diese Eigenschaft standardmäßig falsch haben – wasipeer