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

Rails:createアクションの仕組み

動機

newとcreateの役割に困惑したためのメモ作成

new

新しく作成する場合は
new.html.hamlとnewアクションがまず使用される

create

newの中のformで作成した内容を元にDBへ登録するアクションがcreate

以下のコードが一連の流れです。

def create
    @task = Task.new(task_params)
    if @task.save
      redirect_to task_path(@task), notice: 'Task is create'
    else
      render :new
end

データの取得

@task = Task.new(task_params)

private
  def task_params
    params.require(:task).permit(:title, :content)
  end

newで取得した内容を@taskに引数として渡している
引数にはprivateメソッドで取得した値をいれる

requireは必要という意味
permitは許可という意味
なので:taskモデルの:titleと:contentは許可するけど他の値は許可しないよというようなデータを取得している(ストロングパラメータ)

save

if @task.save
      redirect_to task_path(@task), notice: 'Task is create'
    else
      render :new

取得したデータが保存できたら
showページに遷移する
できなかったらnewページに遷移する

重要

createアクション内もインスタント変数にしている理由は
createからnewページへ遷移する際newページで使用されるインスタンス変数はcreateアクション内にインスタンス数があればこれを利用できる

すなわち
保存されなかったデータも残したままnewページを呼び出すことができる

k_u
初心者エンジニアのスキルアップとしての取り組み わからなかったことを備忘録として公開していきます。 間違いがあればご指摘していただけると嬉しいです。
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
ユーザーは見つかりませんでした