jquery - Rails jquery formtastic 部分 => 未定义方法 'inputs'

标签 jquery ruby-on-rails partial formtastic

当另一个字段发生更改时,我尝试更新 select 语句的值。

这是我的代码:

表单(_form.html):

<%= semantic_form_for [:projects,@projectmilestone], :remote => true  do |form| %>

    <%= form.semantic_errors :state %>
    <%= form.inputs do %>
      <%= form.input :name, :as => :string%>
      <%= form.input :description, :as => :text%>
      <%= form.input :department_id, :as => :select, :collection => Department.all, :wrapper_html => { :class => "submittable" }%>
      <%= form.input :custom, :as => :hidden%>
      <%= form.input :projectcapstone_id , :as => :hidden %>
      <div id="stakeholders">
        <%=render :partial => "stakeholders_form", :locals => { :form => form }%>
      </div>
      <%= form.input :statusweight, :as => :numeric%>
      <%= form.input :ratingweight, :as => :numeric%>


    <%  end %>

    <%= form.submit "Submit" %>

<% end %>

部分字段需要更新:

<% unless @projectmilestone.department_id.nil? %>
  <% form.inputs :partial do %>
    <%= form.input :user_id , :as => :select, :collection => @users %>
  <% end %>
<% end %>

我的 application.js 文件中的 jQuery 函数:

$('.submittable').live('change', function() {
$(this).parents('form:first').submit();
return false;
});

Controller :

  def update
    @projectmilestone = Projectmilestone.find(params[:id])
    @users= User.where("department_id = ?",@projectmilestone.department_id) unless @projectmilestone.department_id.nil?
    respond_to do |format|
      if @projectmilestone.update_attributes(params[:projectmilestone])
        format.js {render :layout => false}
      end
    end
  end

我的 View 中的update.js.erb文件:

$('#projectmilestone_department_id').css("color","red");
$("#stakeholders").replaceWith("<%= escape_javascript( render :partial => "stakeholders_form", :locals => { :form => form } ) %>");

部分加载在第一页加载时很好,但是当通过 JavaScript 加载时,我收到以下错误:

ActionView::Template::Error (undefined method `inputs' for #<String:0x00000117e81940>):
    1: <% unless @projectmilestone.department_id.nil? %>
    2:   <% form.inputs :partial do %>
    3:     <%= form.input :user_id , :as => :select, :collection => @users %>
    4:   <% end %>
    5: <% end %>
  app/views/projects/projectmilestones/_stakeholders_form.html.erb:2:in `_app_views_projects_projectmilestones__stakeholders_form_html_erb__1391421669166525649_2348024640__1321038554949321784'
  app/views/projects/projectmilestones/update.js.erb:4:in `_app_views_projects_projectmilestones_update_js_erb__638343879728010384_2348034340_1083018837200874056'
  app/controllers/projects/projectmilestones_controller.rb:88:in `block (2 levels) in update'
  app/controllers/projects/projectmilestones_controller.rb:86:in `update'

javascript UJS 循环也可以正常工作,因为当我更改 Department_id 字段时,CSS 会更改为红色。

我猜这个错误与本地人有关,但我不知道是什么。

请帮忙!!!

谢谢,

尼古拉斯。

最佳答案

当您调用 update.js.erb 时,您没有 form 对象,因此这将失败。

也许您可以查看部分生成的 HTML,然后重写它,以便将 @projectmilestone@users 作为参数。

您的更新方法具有这两个可用参数,因此应该可以工作。

关于jquery - Rails jquery formtastic 部分 => 未定义方法 'inputs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938402/

相关文章:

java - 如何编写防止部分匹配的正则表达式

ruby-on-rails - Rails content_for不局部渲染

html - 单击登录按钮时如何显示loading.gif?

javascript - jQuery:忽略选择器的元素索引

javascript - 使用 JavaScript 理解匿名函数

ruby-on-rails - rails 未定义方法 `each' 为 nil :NilClass

ruby-on-rails - Rails中的模板,局部和布局?

ruby-on-rails - Ruby on Rails 上的 Gem Seer 和 Ajax

javascript - 将div内的所有代码替换为实际的html

ruby-on-rails - 使用Rails自动启动ElasticSearch