使用带有remote: true 的ajax 的Ruby 表单会给出ActionController::InvalidAuthenticityToken 错误。经典提交不

2024-01-10

我正在为 RoR 网站编写聊天页面。我已经用 HTML 解决了所有问题,并且正在尝试使用 ajax 来实现它。有一个用于提交消息的表格。表单标签读取<%= form_for(@chat, remote: true, :authenticity_token => true) do |f| %>

我的整个看法:

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

控制器:

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

另外,我有<%= csrf_meta_tags %>在我的 application.html.erb 中

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


默认情况下authenticity_token被设定为false。所以你需要在你的application.rb

config.action_view.embed_authenticity_token_in_remote_forms = true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用带有remote: true 的ajax 的Ruby 表单会给出ActionController::InvalidAuthenticityToken 错误。经典提交不 的相关文章

随机推荐

  • Python:解析 JSON 时出现 Keyerror

    我刚刚编写了一个程序来解析 api 中的一些数据 API 以 JSON 格式返回数据 当我尝试解析它时 它给了我一个关键错误 Traceback most recent call last File test py line 20 in
  • 避免 Python 中不必要的切片复制

    对于这样的情况 是否有一个常见的习惯用法可以避免无意义的切片复制 gt gt gt a bytearray b hello gt gt gt b bytearray b goodbye cruel world gt gt gt a exte
  • sql-左连接-计数

    假设我有两张桌子 文章和评论 当我从文章表中选择列时 我还想在同一个选择语句中选择文章的评论数 假设这两个表之间的公共字段是articleid 我怎么做 我可以完成它 但我不知道我的方法是否有效 所以我想学习正确的方法 这应该更有效 因为分
  • 如何在android中显示所有共享选项?

    我正在开发一个 Android 应用程序 想通过打开所有设备中可用的共享选项 但目前该列表显示电子邮件 蓝牙 Gmail 和消息传递 BBC 新闻等其他应用程序在同一设备中显示了更多选项 如 Bump Picasa 等 如何显示所有可用选项
  • 在java中读取JSON对象[重复]

    这个问题在这里已经有答案了 我们如何在 JSP Servlet 或任何其他 Java 程序中读取 JSON 对象 我建议使用Gson http code google com p google gson 为了这 它的优点是对泛型的支持非常好
  • 即使首字母丢失,Elasticsearch 也会提供拼写检查建议

    我创建一个这样的索引 curl location request PUT http 127 0 0 1 9200 test header Content Type application json data raw settings num
  • 编译 Qt 库以在 Visual Studio 2008 上运行,为什么 nmake 失败?

    我正在尝试让我的 Visual Studio Qt 插件正常工作 因此为了重新编译 Qt 库 我从 VS 命令提示符运行了以下命令 c Qtfolder gt configure platform win32 msvc2008 之后我运行
  • Apple TestFlight:“此版本不再可用于测试”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在使用 TestFlight 进行内部 Beta 测试 一切都已设置完毕并且已经运行了一段时间 在提交的二进制文件之一被 AppSt
  • 在Python中使用有序字典作为对象字典

    我不知道为什么这不起作用 我正在使用odict http dev pocoo org hg sandbox raw file tip odict py班级来自PEP 372 http www python org dev peps pep
  • C# 加载二进制文件

    请告诉我最好 最快的方法 1 将非常小的二进制文件加载到内存中 例如图标 2 加载 读取大小为 512Mb 的非常大的二进制文件 3 当您不想考虑大小 速度而只需要做一件事时 您的常见选择 将所有字节读入内存 谢谢你 附 抱歉 也许是一个微
  • 检查JTA事务是否成功提交

    有没有办法检查当前事务是否在 JPA 实体侦听器中提交 如下所示 ApplicationScoped public class EntityListener Inject private Event
  • 如何从 JSON 回复中提取有意义的信息? [复制]

    这个问题在这里已经有答案了 回复 印度孟买 response version 0 1 termsofService http www wunderground com weather api d terms html features ge
  • ruby中通过ioctl获取essid

    为了避免依赖无线工具 我想使用 ioctl 直接从设备获取 essid 在 C 中这不会是问题 但在 Ruby 中则完全不同 问题在于以下结构无线 h用作 ioctl 的输入 回复 struct iw point void user poi
  • 在python中将字典转换为二进制

    我有一本字典 其中键作为我的客户 ID 值作为我的电影 ID 尽管客户已经多次观看同一部电影 但我希望将其制作为一部电影 这里我需要将我的字典转换为二进制数据 在所有行中 我需要客户 ID 和列作为电影 ID 如果客户看过电影 则给出 1
  • 如何删除默认的 Bootstrap 3 轮播控件背景渐变?

    我很确定这是我需要修改的代码 但由于某种原因我无法让渐变在 IE 中消失 我要他们彻底消失 carousel control text shadow none opacity 1 filter alpha opacity 100 carou
  • Pandas Groupby Agg 功能不减少

    我正在使用我在工作中已经使用了很长时间的聚合函数 这个想法是 如果传递给函数的系列的长度为 1 即该组只有一个观察值 则返回该观察值 如果传递的系列的长度大于 1 则观察结果将以列表形式返回 这对某些人来说可能看起来很奇怪 但这不是一个 X
  • (Tomcat) 部署时备份 WAR

    是否有任何内置机制可以在 Tomcat 中部署时备份 war 文件 例如 我部署了 whosit war 我想要当前部署的 whosit war 备份到 whosit backup war 或者 如果每个部署在 whosit deploy
  • 计算一个字符串在另一个字符串中出现的次数

    我有一个指向 CSS 文件的字符串 css style css 我想知道有多少 都在字符串之内 我如何用 JavaScript 得到这个 对于这个简单的情况 您不需要正则表达式 var haystack css style css var
  • 如何根据给定的文件夹名称创建多个目录

    我有一个文件列表 这些文件的名称由类组和 ID 组成 eg science 000000001 java 我能够获取所有文件的名称并将它们拆分 因此我将类组放入一个数组中 将 id 放入另一个数组中 我拥有它 以便数组不能有两个相同的值 这
  • 使用带有remote: true 的ajax 的Ruby 表单会给出ActionController::InvalidAuthenticityToken 错误。经典提交不

    我正在为 RoR 网站编写聊天页面 我已经用 HTML 解决了所有问题 并且正在尝试使用 ajax 来实现它 有一个用于提交消息的表格 表单标签读取 我的整个看法 br div align center br span span div