这可能是我提出的更困难的问题之一,但是我已经停留了几天,我认为最好从更有经验的铁路社区获得支持。
我在工作的一个虚拟应用程序,遵循这个指南大概… ajax/jquery tutorial …
该指南帮助我创建了一个“品牌”(包括嵌套模型“模型”,“子模型”和“风格”)提交表单(使用simple_form)和品牌列在同一页面上。 ,并且验证(对于我的模型)是强制的..但是,当我把表单和品牌列表在同一页面上,我失去了在提交失败时出现的整齐的内联验证错误(见下图)。无法获得内联错误的工作使我意识到我有更多的了解渲染..这就是为什么我固定在找到这个问题的答案
…这里是列表:
下面是索引操作的控制器:
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
上述表单创建了嵌套提交表单中使用的品牌,模型,子模型和样式…以下是表单的代码:
{ :class => 'form-horizontal' },:remote => true do |m| %>
'Brand' %>
'Model' %>
'Submodel' %>
'Style' %>
'btn btn-primary' %>
'btn' %>
现在你可以看到我在使用:remote =>真的…我希望表单创建新的“品牌”,或者为表单重新加载内联验证错误。目前我的创作动作看起来像:
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被调用时,但是发生的一切就是表单域重新加载空白,而不是输入数据和内联验证错误。
我希望我在这里提供了足够的信息来获得帮助..真的很挣扎在这一个。谢谢!