2012-01-22 5 views
0

ここには、フィールドをフォームに動的に追加するraislcasts.com complex-form-examplesの関数があります。この関数は、レール3.1.3とjqueryで動作します。レール3.1.0とjqueryではバックスラッシュ "... "は何ですか?

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, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")") 
    end 

シンボルは、シンボルであり、シンボルでなければなりません。 #{..}の場合、\"...\"の目的は何ですか?それを削除するとエラーが発生します。

+2

:Exがいるので、あなたが文字列内(バックスラッシュで始まる)、二重引用符の任意の番号を使用することができます...

?文字列は二重引用符で始まります。したがって、文字列を早期に終了させないように、ネストされた文字列をエスケープする必要があります。 – jaydel

+0

もちろん、削除はエラーです。文字列は '' '文字で囲まれています;これはRubyコードの価値ですか? –

答えて

6

目的は、文字列がこの文字でバックスラッシュをするために使用され

"This is a \"quote\"" 
=> This is a "quote" 

'This is a \'quote\'' 
=> This is a 'quote' 

"This is a 'quote'" 
=> This is a 'quote'  

'This is a "quote"' 
=> This is a "quote" 
3

適切な使用のための

例を終了していないことを確認するために、引用符のと同じタイプの内側に登場する引用符をエスケープすることです二重引用符をエスケープします。それは二重引用符をエスケープすることではありません

var test = "Bobby said "Hello!" to the crowd."; 
-> will give you an syntax error 

var test = "Bobby said \"Hello!\" to the crowd."; 
-> double quote for (Hello!) is escaped using backslash 
+0

ありがとうございます。 – user938363

関連する問題