Help us understand the problem. What is going on with this article?

【Rails】redirect_toとrenderの使い分け

More than 1 year has passed since last update.

renderとredirect_to

redirect_to

指定したcontroller、actionに再度リクエストを送信
controllerのインスタンス変数は、リダイレクト先で新たに生成

render

controllerで処理した結果の出力先Viewを指定する
controllerのインスタンス変数は、そのままViewに渡される

基本的に、
データを追加、更新、削除を行う時は「redirect_to」
データの取得を行う時は「render」

messages_controller.rb
  def index
    @message = Message.new
  end

  def create
    @message = current_user.messages.new(message_params)
    if @message.save
      redirect_to :index
    else
      flash[:alert] = "メッセージを入力してください。"
      render action: :index
    end
  end

メッセージボタンを押すとフォームに入力されたメッセージが送信される時の処理。
メッセージの保存に成功すれば、redirect_toにより、indexアクションのリクエストが再度送信されるため、メッセージは正しく表示される。
例えば、ここがrenderだった場合、メッセージの保存は成功するが、正しく表示されない。

参考記事

http://ruby-rails.hatenadiary.com/entry/20140808/1407427457
http://avosalmon.hatenablog.com/entry/2014/05/17/%E3%80%90Rails%E3%80%91render%E3%81%A8redirect_to%E3%81%AE%E9%81%95%E3%81%84

gitlab-jp
Git/DevOpsツールチェーンプラットフォーム「GitLab」についての日本コミュニティ。
https://gitlab-jp.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした