-1

これはばかげた間違いである可能性が最も高いですが、この中にif条件を設定することに少し行き詰まっています

output = "<option value='#{user.id}' #{strDisabled} >if (user.company_name != "")#{user.company_name},&nbsp end if (user.name != "")#{user.name},&nbsp end if (user.email != "")#{user.email} end</option>".html_safe

それはちょうどルビーコードを出力しています、私はおそらくマイルアウトしていますが、私はルビーを使用するプロジェクトにいますが、私はしていません:)

前もって感謝します

4

5 に答える 5

2

Rails には、content_tagHTML タグを生成するためのヘルパーがあります。

content_tag :option, value: user.id do
  output = []
  output << user.company_name unless user.company_name.blank?
  output << user.email unless user.email.blank?
  output.join(",&nbsp").html_safe
end
#=> "<option value=\"123\">user's company name,&nbsp;user's email</option>"
于 2013-07-24T15:48:28.743 に答える
2

コードを読みやすくするための簡単なリファクタリングを次に示します。

output = "<option value='#{user.id}' #{strDisabled}>"
output << "#{user.company_name }, " if user.company_name.present?
output << "#{user.name}, " if user.name.present?
output << user.email if user.email.present?
output << "</option>"
output.html_safe

それを行うもう1つの方法は

output = "<option value='#{user.id}' #{strDisabled}>"
output << ([user.company_name, user.name, user.email].reject(&:blank?) * ', ')
output << "</option>"
output.html_safe

2行目は、3つの文字列のうち空白でないものを選択し、それらを結合します,

于 2013-07-24T15:47:12.227 に答える
0

#{}変数だけでなく、Ruby コードである各ピースを配置する必要があります。if を文字列の中に入れるのは良い/適切なことだとは思いません。

于 2013-07-24T15:43:41.050 に答える
0

あなたが達成しようとしているように見えるものを近似するために、コードを再フォーマットしようとしました:

output = "<option value='#{user.id}' #{strDisabled} >"
if (user.company_name != "")
  output << "#{user.company_name},&nbsp;" 
end 
if (user.name != "")
  output << "#{user.name},&nbsp;" 
end 
if (user.email != "")
  output << "#{user.email}"
end
output << "</option>"
output = output.html_safe

非改行スペース HTML エスケープ コード用の多数の文字列ターミネータとセミコロンが欠落していました。しかし、あなたの主な問題は、すべてを同じ行で実行しようとしていて、if/else 構造が正しく動作することを保証していなかったことです。

  1. HTML文字列の外側と
  2. 適切に形成された。

IDE を使用していますか、それともテキスト エディタでこれを行おうとしていますか? 後者の場合は、少なくとも構文の強調表示を行うものを見つけることを強くお勧めします。これにより、苦しんでいた問題がより目に見えるようになります。

于 2013-07-24T15:46:03.363 に答える
0

次のように書くことができます:

output = "<option value='#{user.id} #{strDisabled}'> 
  #{user.company_name if !user.company_name.blank?},&nbsp; 
  #{user.name if !user.name.blank?},&nbsp; 
  #{user.email if !user.email.blank?}
</option>".html_safe
于 2013-07-24T15:47:40.190 に答える