[Rails] 맞다, 컨트롤러로 매개변수 뽑자. [Action Args]
11993 단어 action_argsRubyRails
def show
@user = User.find(params[:id])
end
이렇게 하면 찾을 수 있다.단, ActionArgs의gem를 가져온 후
def show(id)
@user = User.find(id)
end
이런 느낌이야.post에서 전달된 값도 마찬가지다.
class UsersController < ApplicationController
def create(user)
@user = User.new(user)
...
end
end
없어도 안 죽어쓰고 싶은 이유있죠그러나 다른gem와 병용할 때 문제가 발생하는 경우도 있다.
캔캔캔캔과 함께 사용
Strong Parameters 주변의 문제이기 때문에 대부분의gem은 문제없을 것입니다.
그리고 부작용으로 처음 보는 사람
왜냐하면.. 쓰기에 편하기 때문에 쓰고 싶어요.
사용법
class UsersController < ApplicationController
# params[:id] を必要とする
def show(id)
@user = User.find id
end
# params[:page] はあってもなくてもいい
def index(page = nil)
@users = User.page(page).per(50)
end
# ↑よりも↓の書き方がおすすめと README には書いてある
# params[:page] はあってもなくてもいい
def index(page: nil)
@users = User.page(page).per(50)
end
# params[:post_id], params[:comment] を必要とする
def create(post_id:, comment:)
post = Post.find post_id
if post.create comment
...
end
end
매개 변수가 사라지지 않았기 때문에 이전과 같은 코드도 정상적으로 작동할 수 있을 것이다.Strong Parameters
Strong Parameters에는 두 가지 방법이 있습니다.
permit 메서드 호출
class UsersController < ApplicationController
def create(user)
@user = User.new(user.permit(:name, :age))
...
end
end
성명
UsersController <-> User
class UsersController < ApplicationController
# User モデルの Strong Parameters
permits :name, :age
# user は ActionArgs によって確認されたものが渡される
def create(user)
@user = User.new(user)
end
end
model_name
.class MembersController < ApplicationController
# User モデルの Strong Parameters
permits :name, :age, model_name: 'User'
end
Filter
before_action
시스템의 처리.평범하게 쓰다.
class UsersController < ApplicationController
before_action :set_user, only: :show
def show
end
private
# params[:id] が id にセットされる
def set_user(id)
@user = User.find(id)
end
end
Scaffold Generator
Action Args 스트림에서 생성됩니다.
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
permits :name, :age, :email
# GET /users
def index
@users = User.all
end
# GET /users/1
def show
end
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
end
# POST /users
def create(user)
@user = User.new(user)
if @user.save
redirect_to @user, notice: 'User was successfully created.'
else
render action: 'new'
end
end
# PUT /users/1
def update(user)
if @user.update_attributes(user)
redirect_to @user, notice: 'User was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /users/1
def destroy
@user.destroy
redirect_to users_url
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user(id)
@user = User.find(id)
end
end
Reference
이 문제에 관하여([Rails] 맞다, 컨트롤러로 매개변수 뽑자. [Action Args]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sijiaoh/items/78f2379d331b004d6cc3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)