Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails/JS按钮onclick可在不进入DB的情况下重新渲染部分_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript Rails/JS按钮onclick可在不进入DB的情况下重新渲染部分

Javascript 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

我希望使用按钮(Add)重新加载部分表单。我是新来的,不知道如何简单地在部分列表中显示字段,就像单击“添加”按钮的次数一样,一个字段显示在另一个字段下面。我找不到相关的例子。当对象保存在DB中时,所有AJAX示例都提到js.erb

<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问题,用于简单地将表单呈现为列表。哟你把我自己对另一个问题的回答标记为“重复”,因为我在下面告诉过你。我不确定你是否理解两者的区别。