2013-06-02 4 views
0

у меня есть это, на мой взгляд:Уплотненный «если еще» заявление в другой «если еще» не работает

<tr> 
    <td> 
    <% if transaction.category.blank? %> 
     <a ... > ... </a> 
    <% else %> 
     <% if transaction.to_account_id.blank? %> 
      <a ...> ... </a> 
     <% else %> 
      <a ...> ... </a> 
     <% end %> 
    <% end %> 
    </td> 
. 
. 
. 
</tr> 

a элементы довольно огромный, поэтому я опустил их.

Мне нужно проверить, не имеет ли транзакции никакой категории, а затем использовать первое условие из первого if else.

Если у транзакции есть категория, мне нужно проверить, если она имеет значения в столбцах from_account_id и to_account_id. Итак, я использую другой оператор if else, чтобы проверить, to_account_id - blank, и если да, используйте первое условие из второго оператора if else.

Но заявление второго if else не работает. На самом деле я вижу только <tr> с, где to_account_id имеет значение. First if else заявление (с category проверка) работа хорошо.

Также мне интересно, почему if else в <td> влияет на видимость <tr>.

Заранее благодарен!

+0

Я думаю, что вы, вероятно, есть еще одна опечатки в коде. Как есть, это не будет ошибкой, как вы описываете. Кроме того, похоже, вы можете легко использовать if/elsif/else –

+0

Да, вы правы! У меня была 'delegate: user,: to =>: account' в модели' Transaction' и 'has_many: transaction,: through =>: account' в' User'. Таким образом, согласно другим условиям в модели 'Account', транзакции current_user заключались только в транзакциях с' to_account_id' не пустым. И мои '' s предназначены только для 'current_user.transactions'. Кроме того, я изменил вложенные 'if/else' на' if/elsif/else'. Сейчас все работает. Благодаря! –

ответ

1

Я рекомендую вам использовать области применения. Тогда вам не нужно вставлять столько логики в ваше мнение. Вы можете использовать также области с ассоциациями, как:

scope :with_categories, joins(:categories) 

Посмотреть Rails руководства здесь Ruby on Rails Guide и хороший ASCIIcast о здесь ASCIIcasts

Смежные вопросы