2012-01-31 4 views
0

私はrailscast 197に従っていますが、レール3.1.3、jqueryとscaffoldを使用しています。いいですね:スカイフォールド、すべてうまくいきますが、そのエピソードではフィールドを追加できません。 jqueryのコードは、私のために働いていない、ここに私のコードです...事前に感謝します。 JavaScriptでrailscast 197 how to:function add_fields

/

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> 
をapplication.js

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

答えて

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)}')")) 

ヘルパーの/ application_helper.rb

はい、私はs。今それは動作します。ありがとう。

関連する問題