2015-09-05 34 views
9

私は画像のサポートを追加したモデルの重要な部分に取り組んでいます。理想的には、モデルを編集している場合はイメージを表示したいと思います。変数が存在するかどうかを確認するにはどうすればいいですか?

<%= Logo.url({@company.logo, @company}, :thumb) %> 

問題がまだ新しいアクションの会社ですので、私は@companyが設定されているかどうかを確認する必要があるとして、同社の変数は、editアクションでのみ利用可能であるということです。

<%= unless @company do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

問題が発生すると、次のエラーが発生します。

"EEXテンプレートで@companyが利用できない割り当て可能な割り当てます。[:アクション、:チェンジ]"

は私がis_nilと試みたが、同じエラー。

答えて

25

編集Phoenix 0.14.0@companyは、設定されていなければnilを返します。それは、(暗黙的を明示的に。)割り当ては、明示的になるように上げるように変更されました


あなたが@companyassigns.companyのいずれかを使用している場合は、エラーが発生します。しかし、assigns[:company]を使用すると、値が設定されていないとnilが返されます。

<%= if assigns[:company] do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

それはあなたがネストされたテンプレートを使用している場合、あなたはあまりにによってこれを渡す必要がありますことは注目に値する:

<h1>New thing</h1> 
<%= render "form.html", changeset: @changeset, 
         action: thing_path(@conn, :create), 
         company: assigns[:company] %> 
+5

理想的なものの、会社変数を渡すことであったとしても、それはなります。無し。それは間接を避けるでしょう。 –

+0

@JoséValimこれは良い点です。答えにメモを追加します。 – Gazler

関連する問題