问题标签 [ruby-on-rails-5.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
480 浏览

rails-admin - 无法验证 CSRF:rails_admin 与 rails_api

我创建了一个新的 rails-api 应用程序并为其添加了一个地址模型,然后安装了 rails_admin。每当我尝试添加行时,我都会得到422s

我可以看到 CSRF 令牌已在 JSON 中发送,但它说它无效。

有什么问题?宝石里可能有什么东西?

0 投票
1 回答
800 浏览

jquery - 安装 bootstrap gem 或 yarn 为 rails 5.1 或两者添加 bootstrap

在使用 --webpack=react 选项在 rails 5.1 中设置项目后,我应该安装引导 gem 吗?或使用纱线添加引导程序?或者,如果我在整个项目中使用 rails 和 react 组件,我是否需要两者?

另外,这两种方法有优缺点吗?

0 投票
1 回答
92 浏览

api - Bigcommerce 允许选择不存在 SKU 的选项组合

我有一个产品“衬衫”,它有两种变体:

当我使用 v3 API 在 bigcommerce 上添加此产品并在商店中查看此产品时,我可以选择选项组合color = Red and Size = L。实际上,该产品不存在具有此类选项组合的此类变体。如何限制用户选择 bigcommerce 上没有 SKU 的选项组合?

0 投票
1 回答
178 浏览

node.js - 使用 react_on_rails gem 创建演示项目中的节点问题

我正在尝试按照本教程使用 gem react_on_rails 创建一个虚拟项目

我想我已经遵循了本教程的每一步,但是在我们必须运行项目的最后一步中,弹出了与节点 js 相关的错误。我什至在系统上更新了我的节点版本,仍然面临同样的问题

错误

0 投票
1 回答
213 浏览

ruby-on-rails-5.1 - 在 Rails 5 中,每次运行测试时都会调用 setup 吗?

假设我的模型测试中有以下代码。

setup在每个完成之前调用该方法test还是只调用一次并继续运行所有测试?

0 投票
1 回答
189 浏览

validation - Rails 5 belongs_to 范围验证

假设我有这个模型:

默认情况下,rails 5 将使belongs_to :user关联成为必需。如果您通过optional: true,则此关联是可选的。但我想要的是关联只有在需要时才是belongs_to :user可选的。post_typepagepost

我怎么能在线上做呢belongs_to :user

此刻我正在这样做:

但这会给我一个错误,例如:

NoMethodError:未定义的方法“发布?” 为了 #

这是正确的方法吗?还是有另一种方法?

0 投票
2 回答
501 浏览

ruby-on-rails - 在 Rails 5.1 迁移中添加列未正确回滚

这是我在这里的第一个问题,所以请善待。我最近遇到了这个问题。添加列的迁移未正确回滚。我总是可以用 SQL 语句做到这一点,但我真的很想弄清楚为什么这不起作用。

我的迁移代码如下所示。

这是执行时的迁移和回滚。

如您所见,迁移正确地将tutor_pay 列添加到关系发票中。但是,当我回滚时,执行的 SQL 是 ADD COLUMN 而不是 DROP COLUMN。根据 rails 指南, add_column 应该是一个可逆的迁移。我试过改用更改表。我仍然遇到同样的问题。

如果有人可以帮助我解决这个问题,将不胜感激。

0 投票
0 回答
242 浏览

ruby-on-rails - 如何在 Ruby on Rails 的二级模型上设置 counter_cache

问题

好的,所以我有一个奇怪的结构问题,而且我知道的 rails 约定没有帮助。

在我的系统中,用户拥有服务器的成员资格。这通常是一个 HABTM 协会,但我通过会员模型使用 has_many 来简化一些事情(根据http://blog.flatironschool.com/why-you-dont-need-has-and-belongs-to的建议-许多/)。成员资格具有有关用户与服务器关系的元数据。对于我正在做的事情,这很好用。

现在,我遇到的麻烦是每个成员都可以有许多配置文件供用户在服务器上使用。由于配置文件与一个用户和一个服务器相关联,因此我只有配置文件属于_to Membership。我想要做的是在服务器模型上为 Profiles 使用 counter_cache,因为 Rails 似乎一直在运行这个查询:

SELECT COUNT(*) FROM "profiles" INNER JOIN "memberships" ON "profiles"."membership_id" = "memberships"."id" WHERE "memberships"."server_id" = $1

我的尝试

首先,Rails 没有belong_to through,因此配置文件不能通过会员模型“belong_to”服务器,因此我无法在那里提供counter_cache。

我的第二个想法是使用 Server 模型上的委托将 :profiles_count 委托给 Membership 并通过成员资格执行 counter_cache,但我无法让它工作。

我的第三次尝试是将 :server_id 委托给 Profile 中的 :membership ,看看这是否允许我建立与 Server 模型的 belongs_to 关联。不好。有趣的是,没有为此引发错误,它只是在没有警告的情况下回滚新配置文件的保存。

我能想到的唯一另一件事是将 server_id 和 user_id 列添加到 Profiles 模型中,从而有效地从 Memberships 中复制 HABTM 关联。我不确定这种相互关联的水平会有多稳定。这将有效地在两个方向上创建 has_many 关联,使用循环引用链:membership->server->profile->membership....

问题

是否有一个我错过了以这种方式处理 counter_caching 的特定约定,或者我是否坚持以下选择:

  1. 通过inner join不断从数据库中查询count的现状
  2. 冒着无限循环的风险

支持代码

以下是精简到相关位的相关类:

以下是 db/schema.rb 中的 create_tables 为简洁起见被截断为相关字段:

0 投票
0 回答
300 浏览

jquery - rails 5.1 post ajax接收http 405 - 仅在测试环境中不允许的方法

我正在尝试创建这种情况:

流程是:

  1. 用户用名称填写输入;
  2. 点击提交按钮;
  3. 甜蜜警报出现并显示成功消息;
  4. 在甜蜜警报中单击“确定”;
  5. 使用 jQuery 创建一个新行并附加到 html 表中。

负责此流程的 JS 代码是:

点击 后submit button,Capybara 找不到甜蜜提醒。我试过用过save_and_open_screenshot,甜蜜的警报没有出现在屏幕上。我也尝试byebug在控制器中,但它没有被调用。

我正在使用:selenium_chrome.

提前感谢您的帮助!

编辑 1

在@ThomasWalpole 的一些评论之后,我试图发现为什么<%= csrf_meta_tag %>不渲染相应的标签。我发现只是csrf_meta_tag打电话protect_against_forgery?来检查是否config.action_controller.allow_forgery_protectiontrue。由于我在测试环境中运行,config.action_controller.allow_forgery_protectionfalse. 我更改true并重新运行测试。csrf 元标记已呈现,但我仍然收到 http 状态 405 - ajax 调用后不允许的方法。

编辑 2

@ThomasWalpole 要求的我的路线:

编辑 3

我的水豚配置:

0 投票
2 回答
229 浏览

javascript - 函数在页面加载时发送 ajax 请求

我有以下在页面加载时运行的代码。我只想在用户在文本框中完成写入时运行它。

代码是:

文本域:

我不想在页面加载时运行它,但是当用户在其中输入内容时,它应该执行 ajax 工作。

此外,如果用户写入 1 或 3 个字符,它就会开始发送 ajax。我需要检查电子邮件,以便如何处理这个用例?

更新

重要的问题是我已将电子邮件保存在文本字段中,例如表单中的自动填充信息,因此当页面加载时,它会发送 ajax 请求并开始显示系统中已经存在的 xyz 电子邮件。我不想在第一次加载页面时发送 ajax 请求,但我想让它在有人写完并在其中写完电子邮件时让它工作。