2017-08-09 3 views
0

複数のビデオタイプのビデオアップローダフォームを作成しようとしています。フォーム入力の文字列補間

私はこのようなコードで終了しました:そのようなコードで

= semantic_form_for element, url: form_url, method: form_method, remote: true do |f| 
    // there will be some form should return once 
    - ['webm', 'mp4', 'ogv'].each do |ext| 
    .video-item-uploader 
     = f.input :"#{ext}", hint: [ f.object."#{ext}"? ? "#{I18n.t('uploaded')}" : '' ].join.html_safe 
     = f.input :"#{ext + '_cache'}", as: :hidden 

     = f.input :_destroy, as: :boolean, label: "#{I18n.t('do_delete')}" 

、私は構文エラーを得ました。 "#{ext}"を、配列からのテキスト(引用符なし)に置き換えると動作します。

このようなフォーム入力に変数を挿入する可能性はありますか?

+0

文字列の補間を使用すると、文字列内のコードの評価を挿入するときに使用する用語ですしてみてください。ここのあなたの目的はそうではないようであり、あなたの言葉は不適切です。 – sawa

答えて

2
= semantic_form_for element, url: form_url, method: form_method, remote: true do |f| 
    // there will be some form should return once 
    - %w(webm mp4 ogv).each do |ext| 
    .video-item-uploader 
     = f.input :"#{ext}", hint: [ f.object.send("#{ext}?")? ? "#{I18n.t('uploaded')}" : '' ].join.html_safe 
     = f.input :"#{ext + '_cache'}", as: :hidden 

     = f.input :_destroy, as: :boolean, label: "#{I18n.t('do_delete')}" 

この

+0

f.object.send(ext)を除くすべての作品ですか? - このコードはすべてのフォームを分割します。私はf.object.send( "#{ext}")を使ってみましたか? - 助けてくれませんでした – crcerror

+0

f.object.send( "#{ext}?")に編集してください:それはうまくいきました。ありがとうございました! – crcerror

+0

私の間違いありがとう:) –