- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是我问过的更困难的问题之一,但我已经被困了几天了,我认为最好从更有经验的 Rails 社区获得支持。
我正在开发一个大致遵循本指南的虚拟应用程序... ajax/jquery tutorial ...
在进行我自己的定制时,该指南帮助我创建了一个“品牌”(包括嵌套模型“模型”、“子模型”和“样式”)提交表单(使用 simple_form)和在同一页面上列出的品牌。这完美地工作,并且强制执行了验证(对于我的模型)。但是,当我将表单和品牌列表放在同一页面上时,我丢失了提交失败时出现的整洁的内联验证错误(见下图)。无法让内联错误发挥作用让我意识到我还有更多关于渲染的知识需要学习..这就是为什么我专注于寻找这个问题的答案
...这是列表:
下面是索引操作的 Controller :
def index
#This is for the product listing
@brands = Brand.all.reverse
#This is for the form
@brand = Brand.new
@model = Model.new
@submodel = Submodel.new
@style = Style.new
respond_to do |format|
format.html
end
end
上面的表单创建了在嵌套提交表单中使用的品牌、型号、子型号和样式...以下是该表单的代码:
<%= simple_form_for @brand, :html => { :class => 'form-horizontal' }, :remote => true do |m| %>
<fieldset style = "margin-top:34px;">
<legend></legend>
<%= m.input :name, :label => 'Brand' %>
<%= m.simple_fields_for :models, @model do |p| %>
<%= p.input :name, :label => 'Model' %>
<%= p.simple_fields_for :submodels, @submodel do |s| %>
<%= s.input :name, :label => 'Submodel' %>
<%= s.simple_fields_for :styles, @style do |ss| %>
<%= ss.input :name, :label => 'Style' %>
<% end %>
<% end %>
<% end %>
<div class="form-actions">
<%= m.submit nil, :class => 'btn btn-primary' %>
<%= link_to 'Cancel', brands_path, :class => 'btn' %>
</div>
</fieldset>
<% end %>
现在,如您所见,我正在使用 :remote => true
...我希望表单创建新的“品牌”,或者让表单通过内联验证重新加载错误。目前我的创建操作如下所示:
def create
@brand = Brand.new(params[:brand])
respond_to do |format|
if @brand.save
format.html { redirect_to brands_url, notice: 'Brand was successfully created.' }
format.json { render json: @brand, status: :created, location: @brand }
format.js
else
format.html { render action: "index" }
format.json { render json: @brand.errors, status: :unprocessable_entity }
format.js { render 'reload' }
end
end
end
出现在 if @brand.save
下的代码似乎可以工作..但是“else”下面的代码不能按我想要的方式工作。那么当@brand 不保存时会发生什么?我相信索引操作中的代码正在运行,然后 @brand.errors 被转换为 json (我认为这是为了 simple_form 验证错误),然后 reload.js.erb 正在运行..
在尝试重新加载表单(带有验证错误)时,我放置了行 $("#entryform").load(location.href+"#entryform>*","");
进入 reload.js.erb ...当我将无效数据放入表单时,reload.js.erb 被调用,但发生的只是表单字段重新加载为空白,而不是输入数据和内联验证错误。
我希望我在这里提供了足够的信息来获得帮助..在这个问题上真的很挣扎。谢谢!
最佳答案
我认为您可以通过将表单放入部分表单(我们将其称为 simple_form
)并将此代码放入 reload.js.erb 来简化此操作:
$("#entryform").html("<%= escape_javascript(render :partial => 'simple_form') %>");
我不熟悉 jQuery 的 load
方法,但我假设它会执行第二个请求。呈现错误的关键是您在呈现表单时使用的实例变量 (@brand
) 必须与您尝试在 create 中保存的变量相同,以便您可以检查其上的错误。这就是为什么当您想要渲染错误时总是使用 render
而不是 redirect_to
。如果您执行重定向,则会启动一个新请求,这意味着 @brand
被重新初始化。我假设您的 $(...).load(...)
也有同样的问题。
关于jquery - AJAX 表单(使用 simple_form),保留错误验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051050/
在带有 jQuery 的 CoffeeScript 中,以下语句有什么区别吗? jQuery ($) -> jQuery -> $ - > 最佳答案 第一个与其他两个不同,就像在纯 JavaScr
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭13 年前。 Improve th
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
这个问题可能听起来很愚蠢,但请耐心等待,因为我完全是初学者。我下载了两个 jQuery 版本,开发版本和生产版本。我想知道作为学习 jQuery 的初学者,什么更适合我。 最佳答案 如果您对 jQue
The documentation说要使用 1.6.4,但我们现在已经升级到 1.7.2。 我可以在 jQuery Mobile 中使用最新版本的 jQuery 吗? 最佳答案 您当然可以,但如果您想
我在这里看到这个不错的 jquery 插件:prettyphoto jquery lightbox有没有办法只用一个简单的jquery来实现这样的效果。 我只需要弹出和内联内容。你的回复有很大帮助。
很明显我正在尝试做一些 jQuery 不喜欢的事情。 我正在使用 javascript 上传图片。每次上传图片时,我都希望它可见,并附加一个有效的删除脚本。显示工作正常,删除则不然,因为当我用 fir
这两个哪个是正确的? jQuery('someclass').click(function() { alert("I've been clicked!"); }); 或 jQuery('somec
我正在寻找一个具有以下格式的插件 if (jQuery)(function ($) { -- plugin code -- })(jQuery); 我明白 (function ($)
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我知道这个问题已经被问过几次了,但想知道您是否可以帮助我解决这个问题。 背景:我尝试创建一个使用 Ajax 提交的表单(jQuery 表单提交)。我已经工作得很好,然后我想在表单上得到验证。我可以使用
我正在使用无处不在的jquery validate plugin用于表单验证。它支持使用metadata plugin用于向表单元素添加验证规则。 我正在使用此功能。当验证查找这些规则时,它会对元素进
我更喜欢为我一直在开发的网络社区添加实用的视觉效果,但随着事情开始堆积,我担心加载时间。 拥有用户真的更快吗加载(希望是缓存的)副本来自 Google 存储库的 jquery? 是否使用 jQuery
这个问题已经有答案了: Slide right to left? (17 个回答) 已关闭 9 年前。 你能告诉我有没有办法在 jQuery 中左右滑动而不使用 jQuery UI 和 jQuery
我如何找出最适合某种情况的方法?任何人都可以提供一些示例来了解功能和性能方面的差异吗? 最佳答案 XMLHttpRequest 是原始浏览器对象,jQuery 将其包装成一种更有用和简化的形式以及跨浏
运行时 php bin/console oro:assets:build ,我有 11 个这样的错误: ERROR in ../node_modules/jquery-form/src/jquery.
我试图找到 jQuery.ajax() 在源代码中的定义位置。但是,使用 grep 似乎不起作用。 在哪里? 谢谢。 > grep jQuery.ajax src/* src/ajax.js:// B
$.fn.sortByDepth = function() { var ar = []; var result = $([]); $(this).each(function()
我的页面上有多个图像。为了检测损坏的图像,我使用了在 SO 上找到的这个。 $('.imgRot').one('error',function(){ $(this).attr('src','b
我在理解 $ 符号作为 jQuery 函数的别名时遇到了一些麻烦,尤其是在插件中。你能解释一下 jQuery 如何实现这种别名:它如何定义 '$' 作为 jQuery 函数的别名?这是第一个问题。 其
我是一名优秀的程序员,十分优秀!