Vous verrez un code comme celui ci-dessous. Ce n'est pas grave car il y a 4 cas, mais s'il y a 10 cas ou si le nid est profond, cela me rend triste. Je veux l'écrire facilement et avec peu de répétitions. J'essaye juste diverses choses.
<ul>
  <li>
    <div>Nom d'utilisateur</div>
    <div><%= user.name %></div>
  </li>
  <li>
    <div>adresse mail</div>
    <div><%= user.email %></div>
  </li>
  <li>
    <div>sexe</div>
    <div><%= user.sex == 1 ? 'Masculin' : 'Femme' %></div>
  </li>
  <li>
    <div>rôle</div>
    <div><%= user.role %></div>
  </li>
</ul>
Draper et [Translate Active Record Model](https://railsguides.jp/i18n.html#active-record%E3%83%A2%E3%83] % 87% E3% 83% AB% E3% 81% A7% E7% BF% BB% E8% A8% B3% E3% 82% 92% E8% A1% 8C% E3% 81% AA% E3% 81% 86 ) Permet de multiplier comme suit. Si tu peux juste le répéter, c'est bien
<!-- sex_Ajoutez la méthode de texte à UserDecorator.-->
<ul>
  <% %i[name email sex_text role].each do |key| %>
    <li>
      <div><%= User.human_attribute_name(key) %></div>
      <div><%= user.send(key) %></div>
    </li>
  <% end %>
</ul>
Si quelque chose en dehors du modèle est mélangé au milieu, une simple boucle ne fonctionnera pas. La même description apparaît trois fois ou plus, mais elle peut être légèrement réduite en procédant comme suit
<ul>
  <% %i[name email].each do |key| %>
    <li>
      <div><%= User.human_attribute_name(key) %></div>
      <div><%= user.send(key) %></div>
    </li>
  <% end %>
  <!--J'ai une instruction à mettre en route pour la météo d'aujourd'hui-->
  <li>
    <div>La météo d'aujourd'hui</div>
    <div><%= Wheather.today %></div>
  </li>
  <% %i[sex_text role].each do |key| %>
    <li>
      <div><%= User.human_attribute_name(key) %></div>
      <div><%= user.send(key) %></div>
    </li>
  <% end %>
</ul>
Je ne veux pas répéter la description du html trois fois, alors au moins en faire une méthode.
class UsersHelper
  def user_param_li(label, value)
    tag.li do
      tag.div(label) +
      tag.div(value)
    end
  end
end
<ul>
  <% %i[name email].each do |key| %>
    <%= user_param_li(User.human_attribute_name(key), user.send(key)) %>
  <% end %>
  <!--Mettez la météo d'aujourd'hui en route-->
  <%= user_param_li('La météo d'aujourd'hui', Wheather.today) %>
  <% %i[sex_text role].each do |key| %>
    <%= user_param_li(User.human_attribute_name(key), user.send(key)) %>
  <% end %>
</ul>
C'est difficile à lire et je suis triste car je ne peux pas voir la structure à plusieurs reprises. Préparez un objet.
#Cet objet est "Objet de service" "Présentateur" "Vue"_Il est appelé diversement comme "objet" et "PORO".
#Pour ce rôle, je l'appellerais un présentateur.
class UserParamsPresenter
  attr_reader :user
  def initialize(user)
    @user = user
  end
  def params
    [
      user_param(:name),
      user_param(:email),
      wheather_param,
      user_param(:sex_text),
      user_param(:role),
    ]
  end
  private 
  def wheather_param
    ['La météo d'aujourd'hui', Wheather.today]
  end
  def user_param(key)
    [User.human_attribute_name(key), user.send(key)]
  end
end
<ul>
  <!--Ce présentateur peut également être transmis depuis le contrôleur. Je ne sais pas lequel est le meilleur-->
  <% UserParamsPresenter.new(user).params.each do |label, value| %>
    <%= user_param_li(label, value) %>
  <% end %>
</ul>
Dans ce cas, cela n'aurait peut-être pas été si compliqué. Le concepteur est en difficulté. Est-il correct d'écrire du code ruby dans erb pendant un moment? Le présentateur peut être effacé.
<%
  user_params = [
    [User.human_attribute_name(:name), user.name)],
    [User.human_attribute_name(:email), user.email)],
    ['La météo d'aujourd'hui', Wheather.today],
    [User.human_attribute_name(:sex_text), user.sex_text)],
    [User.human_attribute_name(:role), user.role)],
  ]
%>
<ul>
  <% user_params.each do |label, value| %>
    <%= user_param_li(label, value) %>
  <% end %>
</ul>
J'ai fait quelque chose comme Helper, Draper et I18n, mais est-ce que je peux l'écrire assez bien sans? C'est un projet pressé.
<%
  user_params = [
    ['Nom d'utilisateur', user.name],
    ['adresse mail', user.email],
    ['La météo d'aujourd'hui', Wheather.today],
    ['sexe', user.sex == 1 ? 'Masculin' : 'Femme'],
    ['rôle', user.role],
  ]
%>
<ul>
  <% user_params.each do |label, value| %>
    <li>
      <div><%= label %></div>
      <div><%= value %></div>
    </li>
  <% end %>
</ul>
Avec ce sentiment, de nombreuses façons d'écrire me viennent à l'esprit, et je dois faire le tour. Parmi ceux-ci, la seule façon de décider lequel est le meilleur est de regarder les conditions du marché. Si vous avez un style d'écriture que vous n'avez pas beaucoup écrit par vous-même, essayez de l'écrire en bougeant d'abord votre main. J'essaierai de l'écrire pour le moment, et il sera testé si le style d'écriture était approprié en modifiant les spécifications après quelques semaines et les commentaires de collègues.
Recommended Posts