У меня есть следующий код в части Rails, который используется в некоторых почтовых программах, но я не доволен своим решением и чувствую, что это далеко не оптимально.Rails Partials - условность с местными жителями
У меня есть письмо, которое
С моей почтовой программы:
def the_email_i_am_sending(user, inquiry, params = {})
get_variables(inquiry) #This also provides access to my `@user` object
@contact_name = [params[:guest_last_name].to_s, " ", params[:guest_first_name].to_s].join
Я всегда @user
, но в некоторых случаях конкретный партнер будет позвонить в наш API с дополнительными Params из [:guest_last_name]
и [:guest_first_name]
, как определено выше. Это позволяет мне определить @contact_name
в качестве отдельной переменной экземпляра.
Если это .present?
, то я не хочу, чтобы я сделал @contact_name
в поле по электронной почте, а не , которое вытащило бы из нашей БД.
В настоящее время в моем почтовом ящике используется следующий код для определения частичного его отображения.
<% if @contact_name.present? %>
<%= render 'meet_your_guest_v3', tujia_guest: @contact_name %>
<% else %>
<%= render 'meet_your_guest_v3' %>
<% end %>
Мой раствор затем использовать этот код в частичном визуализируется в почтовой программе. Это кажется немного многословным, но я не уверен, о правильном использовании local_assigns.has_key?
<% if local_assigns.has_key?(:partner_guest) %>
<%= partner_guest %> <p>(via our partner</p>
<% else %>
<%= @user.login %>
<% end %>
Есть ли лучший способ?
Вместо того, чтобы помещать логику в представление, вы можете поместить ее в контроллер. Проверьте, предоставляются ли параметры и заданы ли локальные переменные для имени либо из 'user', либо из' params'. Затем просто выведите данные в виде. – Jon