Javascript Rails/JS按钮onclick可在不进入DB的情况下重新渲染部分
我希望使用按钮(Add)重新加载部分表单。我是新来的,不知道如何简单地在部分列表中显示字段,就像单击“添加”按钮的次数一样,一个字段显示在另一个字段下面。我找不到相关的例子。当对象保存在DB中时,所有AJAX示例都提到js.erbJavascript Rails/JS按钮onclick可在不进入DB的情况下重新渲染部分,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我希望使用按钮(Add)重新加载部分表单。我是新来的,不知道如何简单地在部分列表中显示字段,就像单击“添加”按钮的次数一样,一个字段显示在另一个字段下面。我找不到相关的例子。当对象保存在DB中时,所有AJAX示例都提到js.erb <div class="panel-body"> <%= render partial: "degrees/form", :locals => { :f => f } %> <%= f.link_to (fa_icon
<div class="panel-body">
<%= render partial: "degrees/form", :locals => { :f => f } %>
<%= f.link_to (fa_icon 'plus').to_s + " Add Another Qualification ", render(:partial => 'degrees/form', :locals => { :f => f }), class: "btn btn-primary" %>
</div>
{:f=>f}%>
'度/形式',:局部变量=>{:f=>f}),类:“btn btn主”%>
在这里,@application是试图显示学位字段的主要表单。Partial是两个简单的文本字段,一个用于选择教育学位,另一个用于详细信息
<%= f.fields_for [Degree.new], :url => { :action => "index" } do |ff| %>
<div class = "form-group" }>
<%= ff.select :level, options_for_select(Job::EDUCATION, params[:level]), include_blank: "Select Degree", class: 'span-2' %>
<%= ff.text_field :description, :class => 'span5' %>
</div>
<% ff.submit "Add Another Degree", class: 'btn btn-primary' %>
{:action=>“index”}do | ff |%>
“span5%”
您不必保存要传递给.js.erb的东西。。。您只需实例化
但是如果您的示例是精确的,那么您缺少链接的remote:true
标志。。。而且链接上没有定义分部。。。您需要创建一个响应ajax的视图
范例
<div class="panel-body">
<%= link_to new_thing_path, remote: true do %>
<i class="fa fa-plus">
Add another qualification
<% end %>
<div class="new-things-container">
</div>
</div>
添加另一个限定条件
响应ajax请求的控制器
class ThingsController < ApplicationController
def new
@thing = Thing.new
respond_with @thing
end
end
类内容控制器
在指定div内呈现部分内容的ajax请求视图
//views/things/new.js.erb
$('.panel-body .new-things-controller').append("<%= render partial: 'degrees/form', locals: { thing: @thing } %>")
//views/things/new.js.erb
$('.panel body.new things controller')。追加(“”)
Ok,因此显示部分字段时出错,因为部分字段实际上是字段\u,用于将局部变量作为f。它在控制台上抛出的错误是:ActionView::Template::error(未定义的局部变量或#的方法“f”#所以…这是一个错误的问题…什么是f
?它是帮助程序的表单?你不能传递它…它不是一个存在于它的帮助程序块之外的@对象
。如果你想让它成为@对象的属性,你需要传递@object.attribute
,而不是f.input:attribute
提示:要呈现独立于表单的输入,您应该使用FormTagHelpers而不是FormHelpers抱歉,我正忙着做一些事情,正要睡觉。我明天会再看一遍,但我不知道如何传递@object.attribute。实际上,我希望您能意识到这一点实际上,@object(@application)只是创建的,但还没有id,所以当我调用partial时,它希望找到那个对象但不确定要呈现表单的属性的另一个语法。是的,在js.erb->“new things controller”必须是“.new things container”的代码中有一点输入错误。许多thx需要您的帮助。请留下您的评论,我会回复您。好的,如果可能,编辑您的问题以显示整个表单…或者表单声明和发布vant parts如果太大…我也希望看到提到的Part的模板…我不确定我是否理解你的问题…或者如果我不理解你的问题,那就没有意义了。我解释说它们是完全不同的问题。一对二表单提交纯rails问题,这是一个JS+rails问题,用于简单地将表单呈现为列表。哟你把我自己对另一个问题的回答标记为“重复”,因为我在下面告诉过你。我不确定你是否理解两者的区别。