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