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