Railscast 197, как: функция add_fields - PullRequest
0 голосов
/ 31 января 2012

Я слежу за Railscast 197, но я использую rails 3.1.3, jquery и scaffold, без излишеств: scaffold, все работает нормально, но я не могу добавить поля, в этом эпизоде ​​Райан Бейтс дает код для 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 %> 

1 Ответ

0 голосов
/ 17 февраля 2012

Я нашел решение ... здесь, в 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

Да, это так.Теперь это работает.Спасибо.

...