私は自分のフォーム内に選択タグを動的に設定しています。 selectタグは、Payee
へのクエリによって取り込まれます。私は要素のテキスト値として表示したいいくつかのフィールドを持っています。ただし条件付きで行う必要があります。例えば。Rails条件付き選択内容
フィールド:
:company
:first_name
:last_name
私はそうのようなテキストボックスにこれらの3つを連結することができます
f.select :payee_id, Payee.all.collect { |p| [p.company.to_s + " " + p.first_name.to_s + " " + p.last_name.to_s, p.id] }
上記は私が望むように動作しません。 company
が存在する場合は、first_name
とlast_name
を残したいと思います。
company
が空白の場合、私はcompany
とfirst_name
が、それは私が望んでいない2つを、連結存在する場合、現在のみfirst_name
とlast_name
を表示したいと思います。
私はそれぞれのケースごとにデータベースを個別に照会する方法を知っていますが、結果を組み合わせて選択タグが正しく表示されるようにする方法はわかりません。
ここまで私の助けを借りています。私はそれが現在混乱していることを知っていますが、私はこれを行う方法を理解するのに役立つ必要があります。さて、あなたは、単にpayee.display_name
を呼び出すことができ、それは望ましい結果を出力します
# Payee.rb
# I've extracted this into its own method
# because you very well may need it later
def full_name
[first_name, last_name].join(" ")
end
# This can be written more concisely, but I've
# kept it as-is to allow for better readability
def display_name
if company_name.blank?
full_name
else
company_name
end
end
:
def expense_payee_id_field(f)
@payee_with_company = Payee.where("company IS NOT NULL and company !='' ")
@payee_without_company = Payee.where("(first_name != '' or last_name != '') and company = '' ")
f.select :payee_id, Payee.all.collect { |p| [p.company.to_s + " " + p.first_name.to_s + " " + p.last_name.to_s, p.id] }
end
簡単。論理の1行だけで笑 – ctilley79
ルビーが大好き! –
最後の質問が1つあります。これは空の文字列ではなくNULL値で機能します。空文字列とNULLをテストする条件は何ですか?空のフィールドはNULLにする必要がありますか? – ctilley79