Sie sehen Code wie den folgenden. Es ist okay, weil es 4 Fälle gibt, aber wenn es 10 Fälle gibt oder wenn das Nest tief ist, macht es mich traurig. Ich möchte es einfach und mit wenigen Wiederholungen schreiben. Ich probiere einfach verschiedene Dinge aus.
<ul>
<li>
<div>Nutzername</div>
<div><%= user.name %></div>
</li>
<li>
<div>Mail Adresse</div>
<div><%= user.email %></div>
</li>
<li>
<div>Sex</div>
<div><%= user.sex == 1 ? 'männlich' : 'Weiblich' %></div>
</li>
<li>
<div>Rolle</div>
<div><%= user.role %></div>
</li>
</ul>
Draper und [Active Record Model übersetzen](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 ) Wird verwendet, um wie folgt zu multiplizieren. Wenn Sie es einfach wiederholen können, ist dies in Ordnung
<!-- sex_Fügen Sie die Textmethode zu UserDecorator hinzu.-->
<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>
Wenn etwas außerhalb des Modells in der Mitte gemischt wird, funktioniert eine einfache Schleife nicht. Dieselbe Beschreibung wird dreimal oder öfter angezeigt, kann jedoch durch die folgenden Schritte ein wenig reduziert werden
<ul>
<% %i[name email].each do |key| %>
<li>
<div><%= User.human_attribute_name(key) %></div>
<div><%= user.send(key) %></div>
</li>
<% end %>
<!--Ich habe eine Anweisung bekommen, das heutige Wetter auf dem Weg einzugeben-->
<li>
<div>das heutige Wetter</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>
Ich möchte die Beschreibung von HTML nicht dreimal wiederholen, also mache es zumindest zu einer Methode.
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 %>
<!--Setzen Sie das heutige Wetter auf den Weg-->
<%= user_param_li('das heutige Wetter', Wheather.today) %>
<% %i[sex_text role].each do |key| %>
<%= user_param_li(User.human_attribute_name(key), user.send(key)) %>
<% end %>
</ul>
Es ist schwer zu lesen und ich bin traurig, weil ich die Struktur nicht wiederholt sehen kann. Bereiten Sie ein Objekt vor.
#Dieses Objekt ist "Service Object" "Presenter" "view"_Es wird verschiedentlich als "Objekt" und "PORO" bezeichnet.
#Für diese Rolle würde ich es einen Moderator nennen.
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
['das heutige Wetter', Wheather.today]
end
def user_param(key)
[User.human_attribute_name(key), user.send(key)]
end
end
<ul>
<!--Dieser Presenter kann auch von der Steuerung übergeben werden. Ich weiß nicht, welches besser ist-->
<% UserParamsPresenter.new(user).params.each do |label, value| %>
<%= user_param_li(label, value) %>
<% end %>
</ul>
In diesem Fall wäre es vielleicht nicht so kompliziert gewesen. Der Designer ist in Schwierigkeiten. Ist es in Ordnung, für einen Moment Ruby-Code in erb zu schreiben? Der Moderator kann gelöscht werden.
<%
user_params = [
[User.human_attribute_name(:name), user.name)],
[User.human_attribute_name(:email), user.email)],
['das heutige Wetter', 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>
Ich habe so etwas wie Helper, Draper und I18n gemacht, aber kann ich es ohne es ziemlich gut schreiben? Es ist ein eiliges Projekt.
<%
user_params = [
['Nutzername', user.name],
['Mail Adresse', user.email],
['das heutige Wetter', Wheather.today],
['Sex', user.sex == 1 ? 'männlich' : 'Weiblich'],
['Rolle', user.role],
]
%>
<ul>
<% user_params.each do |label, value| %>
<li>
<div><%= label %></div>
<div><%= value %></div>
</li>
<% end %>
</ul>
Mit diesem Gefühl kommen mir viele Arten des Schreibens in den Sinn, und ich muss herumgehen. Von diesen ist die einzige Möglichkeit zu entscheiden, welche besser ist, die Marktbedingungen zu betrachten. Wenn es einen Schreibstil gibt, den Sie selbst nicht viel geschrieben haben, versuchen Sie bitte, ihn zu schreiben, indem Sie zuerst Ihre Hand bewegen. Ich werde versuchen, es vorerst zu schreiben, und es wird getestet, ob der Schreibstil angemessen war, indem ich die Spezifikationen nach einigen Wochen und Kommentare von Kollegen ändere.
Recommended Posts