问题标签 [form-with]

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 回答
1147 浏览

ruby-on-rails - 为新对象加密的 Rails form_with hidden_​​field 值

我有一个用于创建新模型的简单表格。该模型具有panel在控制器中设置的属性。我认为这应该没关系,但它panel是一个枚举。

在视图中,我创建了以下表单(省略了其他属性,因为与问题无关)

问题

panel问题是,它使用一些散列或加密值而不是正确值创建了一个输入字段panel

尝试提交此表单时,我收到一个有意义的错误...

ArgumentError('TfVtJbT4RBcPdCCqrkap+dA8uhJvotCH02+Isxx9ACmI2a9hcp4dOEszqztFy5A8pfIxqi35SW7BexQfYvq8BQ==' 不是有效面板)

备择方案

我试图在表单中明确指定值,但这不会更改创建的 HTML,因此仍然存在同样的问题。

解决方法

到目前为止唯一有效的是创建一个text_field并将其设置为隐藏

这将创建正确的值:

这是正确的方法吗?为什么hidden_field不能按预期工作?我错过了什么?

这是最新版本的 Ruby on Rails (Rails 6.0.2.1)。

CSP

经过进一步调查,这似乎与内容安全政策和 Turbolinks 和/或 UJS 有某种关系

这是我的 CSP:

我注意到有时,在四处导航时,浏览器实际上导航到链接而不是 Turbolinks 做他们的工作(即使在这些情况下,没有记录 CSP 违规),在没有 CSP 的同一实例中,Turbolinks 按预期工作.

我已经包含了我的 Javascriptnonce: content_security_policy_nonce

如果我删除nonce: content_security_policy_nonce这里,Turbolinks 似乎再次按预期工作......

0 投票
2 回答
69 浏览

ruby-on-rails - Rails _destroy 字段在表单中出现两次

我有两个模型,Preset 和 Plot,如下所示:

还有一个用于编辑预设的嵌套表单:

根据railscast 196定义用于销毁绘图的复选框的部分 _editplot :

我在预设控制器中允许了 _destroy 参数

编辑预设的所有其他方面都可以正常工作,但 _destroy 的复选框不能。编辑屏幕上销毁两个地块之一的参数在控制台中显示如下:

"_destroy"=>"1" 的存在表明这是按预期工作的。但是,当使用 Chrome 开发工具检查页面时,它显示<input name="preset[plots_attributes][0][_destroy]" type="hidden" value="0">复选框旁边还有一个隐藏字段,其 _destroy 值在提交表单时也被传递。我有一种感觉,这个元素正在干扰表单,但我不确定它来自哪里或如何摆脱它。

我没有在这里包含它,但我有一些相同形式的 JS 代码,它们添加和删除“新绘图”部分,这些代码生成自己的 _destroy 字段。我不认为它们会成为问题的原因,但如有必要,我可以在编辑中添加此代码。

0 投票
1 回答
510 浏览

ruby-on-rails - Rails 允许的参数未显示在控制台中

我有一对模型,Preset 和 Plot

以及用于编辑预设及其各自绘图的嵌套表单

和一个 _editplot 部分(这是正常工作,但包括完整性)

我已经在预设控制器中允许了我需要的参数,如下所示:

因此,我希望 :name 参数包含在 preset_params 中。

控制器中的更新方法如下:

当我提交表单时,检查的图会按预期删除。但是,预设本身的名称不会更新。控制台显示参数包括:name参数,它的值是正确的,但是当我输出preset_params时它没有显示在控制台中。它去哪儿了?

0 投票
1 回答
65 浏览

authlogic - 未初始化的常量 Authlogic::Session::Validation

我正在将 rails 4.2 站点升级到 6.0 并收到

当我尝试加载表单时,大概是因为 Validation 模块已从 Authlogic 中删除,并且一些旧的 gem/code 仍在尝试引用它。如果我对 form_with 使用authentity_token=false 选项,它就会消失,但显然我不想这样做。

所以,在某个地方,某种东西正在引用这个旧模块。这是摩擦:

  1. 我已经在整个代码库中搜索“Authlogic::Session::Validation”。没有什么。
  2. 我已经在整个 gem 树中搜索“Authlogic::Session::Validation”。没有什么。

就像它被配置为用于生成表单真实性令牌或其他东西的插件,但我不知道该配置在哪里或如何找到它。我的意思是,对于那个错误,那个字符串必须在某个地方,对吧?

这是我收到错误时调用堆栈的相关部分(我的代码在moments.haml中):

编辑:我在调用 form_authenticity_token (在上面的调用堆栈中引用)时设置 csrf-token 元标记时遇到了同样的错误。我忘记了我在尝试调试时已将其注释掉。

0 投票
1 回答
41 浏览

ruby-on-rails - from_with 标记导致 Rails 中的内部服务器错误

我是 Ruby on Rails 的新手,正在关注这里的在线教程:https ://guides.rubyonrails.org/getting_started.html

一旦我尝试实现“form_with”元素,我就会在终端中收到以下错误:

在 2020 年 4 月 22 日 12:57:00 +0930 开始 GET "/articles/new" for 127.0.0.1 +0930 由 ArticlesController#new 处理为 HTML 在布局/应用程序中呈现文章/new.html.erb (8.2ms) 完成 500 38 毫秒内的内部服务器错误(ActiveRecord:0.0 毫秒)

到目前为止,我已经能够成功完成本教程,其中包括制作控制器、视图和路由。到目前为止,我已经能够访问浏览器中的页面没有问题。我试过搜索,但似乎无法在网上找到解释。我在我的 Windows 笔记本电脑上使用 Ubuntu 运行 rails。

如果有人可以指出问题或将我转发到某个地方,我将非常感激!

有关如何调试的提示也会有所帮助,到目前为止,这是打印到终端的唯一消息,这似乎相当模棱两可。

更新

我读到其他人在 Windows 上运行 rails 时遇到问题,所以我尝试在虚拟机中运行的 Ubuntu 上尝试相同的进程,但我遇到了同样的问题。这可能是版本问题吗?我将我的 rails 更新到 4.2 版,ruby 仍然是 2.5.1 版

我真的很想动起来,这个问题需要很多时间,非常感谢任何帮助!

0 投票
0 回答
95 浏览

ruby-on-rails - Rails 6 参数未嵌套在模型下,从不同的控制器发送。form_with

我懂了ActionController::ParameterMissing (param is missing or the value is empty: order)

我的参数哈希中缺少其明确的顺序。

我的参数字典是扁平的,不包括{order=> {}}Rails 要求的。你怎么做到这一点?您如何使用 form_with 从另一个控制器提交表单,使用 rails 6?这可能吗?

文档非常糟糕。

Parameters: {"authenticity_token"=>"b1hcu3W38F+HWoi0zgcxcU/tK1mGFks8eBFAMw0ixLaJ3M3Npzceb9KGiNie9MVUxyYILHjo8bkWOvGESZ7PUA==", "cents"=>"1600.00", "amount"=>"0.82902", "side"=>"buy", "commit"=>"Buy"}

家庭控制器上的表格:

订单控制器:

0 投票
1 回答
137 浏览

arrays - 使用 `form_with` 返回一个数组?

在我看来,我有几个复选框,我想发回一个被选中的数组。我通过自己编写 HTML 实现了这一点,但我想知道是否有办法使用FormBuilder#check_box.

我有什么工作

这完美地工作:params包含我所期望的。如果我选中“husky”框并提交,“breeds”数组包含“husky”:

但我想知道是否有办法使用my_form.check_box它,而不是自己写出复选框 HTML。

我尝试过的FormBuilder#check_box

这不符合我的期望。在 中params,无论我选中哪个框,“breeds”数组始终为空:

有没有办法使用FormBuilder助手来做我想做的事情?

似乎真的应该有,但我无法在任何地方找到它。

0 投票
1 回答
211 浏览

ruby-on-rails - 嵌套路由 - rails 5.2.4 - 未定义的局部变量或方法

要在我的应用程序中为客户注册地址,我使用嵌套路由,但是当单击链接注册新地址或编辑现有地址时,系统会显示错误:

#<##Class:0x00007fd1c815fa58>:0x00007fd1d05ef598> 的未定义局部变量或方法“地址”您的意思是?@地址

心地善良的人可以告诉我错误在哪里或缺少什么我还没有看到吗?

这是应用程序代码:

路线.rb

模型/地址.rb

模型/clients.rb

控制器/addresses_controller.rb

视图/地址/index.html.erb

意见/地址/edit.html.erb

意见/地址/共享/_form.html.erb

0 投票
1 回答
268 浏览

ruby-on-rails - 如何使用 Rails 5.2 form_with 触发特定动作?

我的应用程序需要在用户的购物车中多次复制技能(来自技能索引)。所以我决定在提交相关表单,包括重复数和Skill的id时,触发skills_controller的add-to-cart方法。为此,我在技能控制器的强参数中添加了计数器。

不幸的是,我缺少正确设置表单的一些东西:提交时,它会触发create方法。这是代码:

routes.rb提取

Skills_controller.rb方法

index.html.erb表格内容

非常感谢你的帮助!

0 投票
1 回答
34 浏览

ruby-on-rails - Ruby on Rails 表单错误未提供任何输出/不工作

大家好,我到处搜索如何输出表单错误,但没有运气。我尝试了几乎所有在互联网上找到的代码,但仍然无法正常工作。

以下是我的一些文件:

查看/书籍/new.html.erb

book_controller.rb

路线.rb

查看/布局/application.html.erb

我真的不知道我错过了什么来获得错误,感谢您的回答!