0

我正在关注 railscast 197 但我使用的是 rails 3.1.3、jQuery 和脚手架,没有 nifty:scaffold,一切正常,但我无法添加字段,在那一集中 Ryan Bates 给出了 jQuery 的代码,但不是为我工作,这是我的代码:

javascript/application.js中

function remove_fields(link) {  
    $(link).prev("input[type=hidden]").val("1");  
    $(link).closest(".fields").hide();  
  }  

function add_fields(link, association, content) {  
    var new_id = new Date().getTime();  
    var regexp = new RegExp("new_" + association, "g");  
    $(link).parent().before(content.replace(regexp, new_id));  
}

助手/application_helper.rb

module ApplicationHelper
  def link_to_remove_fields(name, f)  
    f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")  
  end  

  def link_to_add_fields(name, f, association)  
  new_object = f.object.class.reflect_on_association(association).klass.new  
  fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|  
    render(association.to_s.singularize + "_fields", :f => builder)  
  end  
  link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))  
end    
end  

_questions_fields.html.rb

<div class="fields">  
  <p>  
    <%= f.label :content, "Pregunta" %>  
    <%= link_to_remove_fields "remover", f%><br />  
    <%= f.text_area :content, :rows => 3 %><br />  
  </p>  
  <p>
  <% f.fields_for :answers do |builder| %>  
    <%= render 'answer_fields', :f => builder %>  
  <% end %>  
  </p>
  <p><%= link_to_add_fields "Agregar respuesta", f, :answers %></p> 
</div> 

_form.html.rb

<%= form_for @asurvey do |f| %>    

    <%= f.label :name, "Nombre de encuesta" %><br />
    <%= f.text_field :name %>
  </p>
  <%= f.fields_for :questions do |builder| %> 
  <%= render 'question_fields', :f => builder %>
  <% end %>  
  <p><%= link_to_add_fields "Agregar pregunta", f, :questions %>
  <p><%= f.submit "Crear" %></p>  
<% end %> 
4

1 回答 1

0

我找到了解决方案......在stackoverflow中这是:

link_to_function(name, h("add_fields(this, \"#{association}\", \"#escape_javascript(fields)}\")")) 

我的前夫:

link_to_function(name, ("add_fields(this, #{association}', #{escape_javascript(fields)}')")) 

当然这个代码在 helpers/application_helper.rb

对,是。现在它起作用了。谢谢。

于 2012-02-17T00:23:16.297 回答