使用带远程的ajax的Ruby表单:true给出了ActionController :: InvalidAuthenticityToken错误。 经典提交没有

我正在为一个RoR网站写一个聊天页面。 我已经完成了所有HTML和我试图用ajax实现它。 有一个提交消息的表单。 表单标签读取 true) do |f| %> true) do |f| %>

我的整个观点:

     Battleriskopoloy - Communications   

[ . . . Communications . . . ]



true) do |f| %>

控制器:

 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 

另外,我的

我在网上发现了一些关于人们在从ajax切换到html提交时遇到与rails 4相同错误的其他事情,但这似乎只是因为他们没有包含:authenticity_token => true参数。 任何帮助是极大的赞赏。

默认情况下, authenticity_token设置为false 。 所以你需要在application.rb添加这一行

 config.action_view.embed_authenticity_token_in_remote_forms = true