Ich habe Anwendungen mit Ruby on Rails geschrieben Ich war neugierig darauf.
Dieser Typ, der jedes Mal mitkommt, wenn Sie einen Controller erstellen 〇〇_helper.rb Wofür wird diese Datei verwendet ... Da es Helfer sagt, hängt es mit Hilfsmethoden zusammen ... ??
Zu dieser Zeit habe ich "Es muss eine bequeme Datei sein, da sie gleichzeitig erstellt wird." Ich suchte in Qiita nach Kommentaren, als ich interessiert war.
Es sieht aus wie eine Datei, die Ihre eigene Hilfsmethode beschreibt. (Selbstgemachter Helfer == Benutzerdefinierter Helfer) Da die Hilfsmethode bis heute nur die von Gem bereitgestellten Dinge verwendet hat Ich dachte intuitiv, dass dies nützlich sein würde.
Ich werde auf die Qiita-Artikel anderer Leute verweisen Dieses Mal habe ich es für das Code-Refactoring meiner persönlich entwickelten App verwendet. Der Inhalt des Refactorings im Controller ist der Inhalt dieses Artikels.
Rails 5.2.3 Ruby 2.5.1
Schauen wir uns zunächst den Controller an, der umgestaltet.
users_controller.rb
class UsersController < ApplicationController
~Kürzung~
private
def set_user
@user = User.find(params[:id])
end
def check_user
redirect_to new_user_registration_path, alert: 'Bitte einloggen oder anmelden' unless current_user.id == @user.id
end
end
Weil das weniger als in der Methode check_user nicht cool ist
Erstellen Sie eine Hilfsmethode und überarbeiten Sie sie.
helpers/users_helper.rb
module UsersHelper
def current_user?(user)
current_user.id == user.id
end
end
Ich habe eine Hilfsmethode namens current_user? Erstellt.
Dieser Methodenname und Inhalt scheint ziemlich Standard zu sein.
Direkt unter dem Verzeichnis namens Helfer
Es gibt auch eine Datei namens application_helper.rb
Es ist wie eine Datei, die Hilfsmethoden verwaltet, die Sie auf mehrere Controller und Ansichten anwenden.
users_controller.rb
class UsersController < ApplicationController
include UsersHelper
~Kürzung~
private
def set_user
@user = User.find(params[:id])
end
def check_user
redirect_to new_user_registration_path, alert: 'Bitte einloggen oder anmelden' if !current_user?(@user)
end
end
Bei Verwendung des eigenen Hilfsprogramms der Hilfsdatei im Controller Es scheint notwendig zu sein, mit include wie in der zweiten Zeile zu lesen.
Außerdem wurde die Beschreibung "es sei denn" in "if! ~" Geändert.
Dies machte den Code ein wenig sauberer.
Refactor posts_controller mit ähnlichem Inhalt.
posts_controller.rb
class PostsController < ApplicationController
def edit
redirect_to new_user_registration_path, alert: 'Bitte loggen Sie sich ein' unless current_user.id == @a_post.user_id
end
def destroy
redirect_to new_user_registration_path, alert: 'Bitte loggen Sie sich ein' unless current_user.id == @a_post.user_id
if @a_post.destroy
redirect_to root_path, notice: 'Beitrag gelöscht'
else
render :show, notice: 'Der Beitrag konnte nicht gelöscht werden'
end
end
private
def set_post
@a_post = Post.find(params[:id])
end
end
Auch hier werden wir die folgende Beschreibung ändern, es sei denn.
Erstellen Sie zunächst eine Hilfsmethode.
helpers/posts_helper.rb
module PostsHelper
def current_user_post?(a_post)
current_user.id == a_post.user_id
end
end
Wir werden dies auf den Controller anwenden.
posts_controller.rb
class PostsController < ApplicationController
include PostsHelper
def edit
redirect_to new_user_registration_path, alert: 'Bitte loggen Sie sich ein' if !current_user_post?(@a_post)
end
def destroy
redirect_to new_user_registration_path, alert: 'Bitte loggen Sie sich ein' if !current_user_post?(@a_post)
if @a_post.destroy
redirect_to root_path, notice: 'Beitrag gelöscht'
else
render :show, notice: 'Der Beitrag konnte nicht gelöscht werden'
end
end
private
def set_post
@a_post = Post.find(params[:id])
end
end
Dies ist auch nach dem Laden des Helfers und dem Refactoring abgeschlossen.
Dieses Mal habe ich einen Artikel über den Controller geschrieben, der jedoch nicht nur für selbst erstellte Helfer, sondern auch für Ansichten verwendet werden kann. Wenn Sie es für eine Ansicht verwenden, scheint es im Gegensatz zum Controller nicht erforderlich zu sein, das Lesen zu beschreiben. Danach werde ich auch den Code in der Ansichtsdatei umgestalten.
Wenn Sie Mängel feststellen, teilen Sie uns dies bitte in den Kommentaren mit.
Recommended Posts