Lors de l'exécution d'une recherche d'élément à l'aide de la méthode find lors du test d'intégration Rails, une erreur de syntaxe s'est produite, je l'ai donc résumée sous forme de mémorandum.
Lors de l'obtention du sélecteur dans le test d'intégration, SyntaxError se produit si vous écrivez comme suit.
find("input[name="commit"]").click
Si vous le modifiez comme suit
find('input[name="commit"]').click
SyntaxError a été résolu. Pourquoi l'erreur SyntaxError s'est-elle produite?
(WIP) L'expansion d'expression est possible avec des guillemets doubles, mais l'expansion d'expression n'est pas possible avec des guillemets simples.
> number = 1234
=> 1234
> "090#{number}5678"
=> "09012345678"
Simple citation
> number = 1234
=> 1234
> '090#{number}5678'
=> "090\#{number}5678"
#L'expansion d'expression n'est pas possible
Il existe une nette différence entre les guillemets doubles et les guillemets simples.
La notation backslash est valide pour les guillemets doubles.
puts "Sera cassé\n était fait"
Sera cassé
c'était fait
En guillemet simple
puts 'Aucun saut de ligne\n'était pas n'
Sera cassé\n'était pas n
Lorsque l'interpréteur ruby (celui qui analyse le code) reconnaît le guillemet double de départ (guillemet simple), il reconnaît le guillemet double suivant (guillemet simple) comme fermé.
"(← Chaîne de caractères de début)"(← Chaîne de caractères fermée) Caractère (← Qu'est-ce que c'est et une erreur se produit.)
Si vous l'échappez, elle sera reconnue comme faisant partie de la chaîne au lieu d'être fermée, alors échappons-la.
Vous devez y échapper comme suit:
Bon exemple:
'\'hoge\''
"\"hoge\""
"'hoge'"
'"hoge"'
mauvais exemple:
""hoge""
''hoge''
Au fait, si vous cochez un modèle comme celui-ci avec irb
> str = '"hoge"'
=> "\"hoge\""
Il s'échappera comme ci-dessus. Par conséquent, il semble que l'erreur pourrait être évitée.
Je pensais que c'était le cas lorsque j'y pensais normalement, mais si vous avez des questions similaires, j'apprécierais que vous puissiez le lire.
Recommended Posts