Ich habe ungefähr 200 Stunden lang Programmieren gelernt und einen Rails-Kurs begonnen. Obwohl das Lernen bisher reibungslos verlaufen ist, war es diesmal schwierig. Ich verstehe den Inhalt von Dojo-Kurs 4 nicht vollständig. Bewahren Sie eine Aufzeichnung als Memo auf, damit Sie sie überprüfen können.
Was ist eine Migrationsdatei? Eine Konstruktionszeichnung beim Erstellen einer Datenbank. Was ist ein Modell: Eine spezielle Klasse zum Bearbeiten von Tabellen Modell erstellen
rails g model Post content:text
Schienen g Modell Modellname Spaltenname: Datentyp
rails g migration add_image_name
Geben Sie den Hash im Routing an.
routes.rb
get "posts/:id" => "posts#show"
Kann mit params [hash] erhalten werden
controller.rb
def show
@id = params[:id]
end
erb:posts/new.html.erb
<%= form_tag("/posts/create") do%>
<% end %>
Vergiss nicht zu tun
Geben Sie den Methodenbeitrag als drittes Argument an.
<%= link_to("löschen","/posts/#{@post.id}/destroy",{method: "post"})%>
<% end %>
Beachten Sie, dass der Speichervorgang im Teil if ~~~ ausgeführt wird (Nicht nur einen booleschen Wert zurückgeben)
def update
@post = Post.find_by(id: params[:id])
if @post.save
redirect_to("/posts/index")
else
redirect_to("/posts/#{@post.id}/edit")
end
end
Geben Sie das Rendering an (Controller-Name / Ansichtsname).
def update
@post = Post.find_by(id: params[:id])
if @post.save
redirect_to("/posts/index")
else
render("posts/edit")
end
end
Vergessen Sie nicht, den Typ anzugeben
<input name="image" type="file">
Geben Sie {multipart: true} an
<%= form_tag("~~~",{multipart: true}) do%>
Verwenden Sie für die empfangenen Parameter [: image] die Lesemethode, um den Inhalt der Bilddaten abzurufen. File.binwrite ("Dateispeicherort", "Dateiinhalt")
def update
@user = User.find_by(id: params[:id])
@user.name = params[:name]
@user.email = params[:email]
@user.image_name = "#{@user.id}.jpg "
image = params[:image]
if params[:image]
File.binwrite("public/user_images/#{@user.image_name}",image.read)
end
end
Verwenden Sie eine spezielle Variable namens session, um Benutzerinformationen auch dann zu speichern, wenn die Seite verschoben wird. Der der Sitzung zugewiesene Wert wird im Browser gespeichert.
session[:user_id] = @user.id
application.html.erb wird von allen Aktionen aufgerufen. Daher ist es effizient, Variablen zu definieren, die in allen Aktionen verwendet werden sollen. Durch Setzen von before_action: Aktionsname wird der "Aktionsname" ausgeführt, bevor die Aktion aufgerufen wird.
application.rb
before_action :set_current_user
def set_current_user
@current_user = User.find_by(id: sessino[:user_id])
end
Definieren Sie Aktionen für die Tabelle (in diesem Fall Post-Modell), in der die zu verwendenden Daten vorhanden sind
post.rb
def user
return User.find_by(id: self.user_id)
end
Verwendungsbeispiel (Benutzer mit Posts aus Posts verknüpfen)
posts_controller.rb
def show
@post = Post.find_by(id: params[:id])
@user = @post.user
end
Definieren Sie eine Aktion für die Tabelle (in diesem Fall Benutzermodell), in der die zu verwendenden Daten vorhanden sind
user.rb
def posts
return Post.where(user_id: self.id)
end
Verwendungsbeispiel (Alle damit verbundenen Beiträge vom Benutzer abrufen und anzeigen)
erb:show.html.erb
<% @user.posts.each do |post|%>
<img src="<%= "/user_images/#{post.user.image_name}" %>">
<%= link_to(post.user.name, "/users/#{post.user.id}") %>
<%= link_to(post.content, "/posts/#{post.id}") %>
<% end%>
Routing festlegen
routes.rb
get "users/:id/likes" => "users#likes"
Aktionsdefinition
rb:users.controller.rb
def likes
@user = User.find_by(id: params[:id])
@likes = Like.where(user_id: @user.id)
end
Notation im Blick
erb:likes.html.erb
<% @likes.each do |like|%>
<% post = Post.find_by(id: like.post_id)%>
<img src="<%= "/user_images/#{post.user.image_name}" %>">
<%= link_to(post.user.name, "/users/#{post.user.id}") %>
<%= link_to(post.content, "/posts/#{post.id}") %>
<% end%>
Vergessen Sie nicht, die pots_id in der Like-Tabelle in der zweiten Zeile zu verwenden, um den entsprechenden Beitrag zu erhalten.
Recommended Posts