2011-05-09 52 views
2

我试图更改另一个字段更改时选择语句的值。rails jquery formtastic partial => undefined method'inputs'

这是我的代码:

表(_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 %> 

jQuery的功能在我的application.js文件中:

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

Co ntroller:在我的意见

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 

update.js.erb文件:但是通过JavaScript的加载时,我得到以下错误在第一个页面加载罚款

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

到的部分负荷:

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__38554949321784' 
    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更改为红色。

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

请帮忙!!!

Thx,

Nicolas。

回答

0

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

也许你可以看看部分产生的HTML然后重写它,以@projectmilestone@users作为参数。

你的更新方法有这两个参数可用,所以应该工作。