问题标签 [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.
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 似乎再次按预期工作......
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 字段。我不认为它们会成为问题的原因,但如有必要,我可以在编辑中添加此代码。
ruby-on-rails - Rails 允许的参数未显示在控制台中
我有一对模型,Preset 和 Plot
以及用于编辑预设及其各自绘图的嵌套表单
和一个 _editplot 部分(这是正常工作,但包括完整性)
我已经在预设控制器中允许了我需要的参数,如下所示:
因此,我希望 :name 参数包含在 preset_params 中。
控制器中的更新方法如下:
当我提交表单时,检查的图会按预期删除。但是,预设本身的名称不会更新。控制台显示参数包括:name参数,它的值是正确的,但是当我输出preset_params时它没有显示在控制台中。它去哪儿了?
authlogic - 未初始化的常量 Authlogic::Session::Validation
我正在将 rails 4.2 站点升级到 6.0 并收到
当我尝试加载表单时,大概是因为 Validation 模块已从 Authlogic 中删除,并且一些旧的 gem/code 仍在尝试引用它。如果我对 form_with 使用authentity_token=false 选项,它就会消失,但显然我不想这样做。
所以,在某个地方,某种东西正在引用这个旧模块。这是摩擦:
- 我已经在整个代码库中搜索“Authlogic::Session::Validation”。没有什么。
- 我已经在整个 gem 树中搜索“Authlogic::Session::Validation”。没有什么。
就像它被配置为用于生成表单真实性令牌或其他东西的插件,但我不知道该配置在哪里或如何找到它。我的意思是,对于那个错误,那个字符串必须在某个地方,对吧?
这是我收到错误时调用堆栈的相关部分(我的代码在moments.haml中):
编辑:我在调用 form_authenticity_token (在上面的调用堆栈中引用)时设置 csrf-token 元标记时遇到了同样的错误。我忘记了我在尝试调试时已将其注释掉。
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 版
我真的很想动起来,这个问题需要很多时间,非常感谢任何帮助!
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"}
家庭控制器上的表格:
订单控制器:
arrays - 使用 `form_with` 返回一个数组?
在我看来,我有几个复选框,我想发回一个被选中的数组。我通过自己编写 HTML 实现了这一点,但我想知道是否有办法使用FormBuilder#check_box
.
我有什么工作
这完美地工作:params
包含我所期望的。如果我选中“husky”框并提交,“breeds”数组包含“husky”:
但我想知道是否有办法使用my_form.check_box
它,而不是自己写出复选框 HTML。
我尝试过的FormBuilder#check_box
这不符合我的期望。在 中params
,无论我选中哪个框,“breeds”数组始终为空:
有没有办法使用FormBuilder
助手来做我想做的事情?
似乎真的应该有,但我无法在任何地方找到它。
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
ruby-on-rails - 如何使用 Rails 5.2 form_with 触发特定动作?
我的应用程序需要在用户的购物车中多次复制技能(来自技能索引)。所以我决定在提交相关表单,包括重复数和Skill的id时,触发skills_controller的add-to-cart方法。为此,我在技能控制器的强参数中添加了计数器。
不幸的是,我缺少正确设置表单的一些东西:提交时,它会触发create方法。这是代码:
routes.rb提取
Skills_controller.rb方法
index.html.erb表格内容
非常感谢你的帮助!
ruby-on-rails - Ruby on Rails 表单错误未提供任何输出/不工作
大家好,我到处搜索如何输出表单错误,但没有运气。我尝试了几乎所有在互联网上找到的代码,但仍然无法正常工作。
以下是我的一些文件:
查看/书籍/new.html.erb
book_controller.rb
路线.rb
查看/布局/application.html.erb
我真的不知道我错过了什么来获得错误,感谢您的回答!