[RUBY] [Organisation] À vous qui êtes embrouillé avec le rendu et la redirection vers

Personne cible

Quelle est la différence entre redirect_to et render? Comment utiliser? Ceux qui savent mais ne peuvent pas s'organiser dans leur esprit

Connaissances préalables

L'action dans le contrôleur Rails est finalement rendue et renvoie une vue. En d'autres termes, 1 rendu ** se produit toujours pour chaque ** action.

def index
end

C'est la même chose que l'activation du rendu "index".

Exemple d'erreur

Lorsque le rendu est traité deux fois

def show
  ~~
    if ~~
      ~~
      render 'index'
    end
  render 'show'
end

La solution est de donner un retour

def show
  ~~
    if ~~
      ~~
      render 'index'
      return
    end
  render 'show'
end

render Une méthode qui spécifie la vue à appeler dans l'action. Autrement dit, ** vous pouvez appeler autre chose que la vue appelée par défaut. ** ** Le format de la vue à appeler est le format RHTML (.html / html.erb, etc.)

--Lors de l'appel d'une autre vue d'action sur le même contrôleur

microposts_controller.rb


def index
  render 'edit'
  render :edit
end

microposts_controller.rb


def index
  render "users/show"
  render template: "users/show"
end

microposts_controller.rb


def index
  render "/warehouse_app/app/views/products/show"
  render file: "/warehouse_app/app/views/products/show"
end

redirect_to Une méthode qui envoie une requête GET à l'URL spécifiée. En d'autres termes, s'il est activé dans une action, ** appellera à nouveau RCV. ** **

microposts_controller.rb


def index
  redirect_to root_url
end

microposts_controller.rb


def index
  redirect_back(fallback_location: root_path)
end

J'ai été autorisé à référencer

Directives relatives aux rails https://railsguides.jp/layouts_and_rendering.html#render%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B

@ 1ulce https://qiita.com/1ulce/items/282cccba1e44158489c8

@ morikuma709 https://qiita.com/morikuma709/items/e9146465df2d8a094d78

Recommended Posts

[Organisation] À vous qui êtes embrouillé avec le rendu et la redirection vers
Que faire si vous vous fâchez contre OpenSSL avec Pyenv Install
[Rails] Que faire si vous ne pouvez pas obtenir de paramètres avec form_with
Comment démarrer avec Slim
Mémo à obtenir avec Struts2 + Ajax
A vous qui avez absolument besoin de retour en arrière
Si vous osez comparer Integer avec "==" ...
J'ai essayé de démarrer avec Web Assembly
[Note] Comment démarrer avec Rspec
[Rails] Donnez cet article à vous qui avez recherché "login nom de devise"