초보자를 위한 루비온 레일스 ⑥ 발리 데이 프로듀싱~
개시하다
이번에는 예전 기사의 계속이다.
가능하다면 이전의 보도를 보십시오.
이번에 우리 발리를 배우자.
초보자를 위한 루비 온 레일스 해설 ①
초보자를 위한 루비 온 레일스 해설 ② 링크 만들기~
루비 온 레일스 ③ 초보자 대상 해설
Ruby on rails 초보자를 위한 설명 ④ ~ 명명 규칙 및 form태그 사용법에 대해서~
⑤~데이터베이스 편집 및 삭제
새 컨트롤러 만들기
새로운 컨트롤러를 만들어라.
이번에는 투고를 관리하는 포스터 컨트롤러를 제작한다.터미널에서 다음 코드를 실행하십시오.rails g controller posts all
all.html.erb 파일에 모든 투고를 표시해 주십시오.
이를 위해 새 발언을 만드는 파일을 만듭니다.new.html.posts 파일에서erb 파일을 만듭시다.
이 new.html.eb 파일로 새로운 투고를 만들다.
새 모델 생성하기
그럼 투고 관리 데이터베이스를 만들자.이번에는 데이터베이스를 전혀 만들지 않았기 때문에 모델부터 만들기 시작했다.
모형은 データベースの情報を操作する仕組み
이고 データベースとのやり取りを行うクラス
라고도 할 수 있다.
모형은 보통 소문자로부터 시작하는 단수 형식으로 명명된다.왜냐하면 모델은 테이블에 하나만 존재하기 때문이다. rails g model post content: string
이렇게 모델을 만들면 데이터베이스의 설계도로 사용되는migration 파일이 만들어진다.
다음 코드를 사용하여 이전 파일을 실행합니다.rails db:migrate
데이터베이스 컨트롤러에서 만든 테이블을 확인하세요.rails dbconsole
.table
ar_internal_metadata schema_migrations
posts users
포스터 리스트 만들었는데.아래 코드로 안에 있는 내용을 보세요..schema posts
CREATE TABLE IF NOT EXISTS "posts"("id"integer PRIMARY KEY AUTOINCREMENT NOT NULL, "content"varchar, "string"varchar, "created_at"datetime NOT NULL, "updated_at"datetime NOT NULL);
발언 작성
new.html.erb 파일에 발언을 만드는 코드를 추가합니다.
new.html.erb<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"></textarea>
<input type="submit" value="送信">
<% end %>
이름이 /posts/create
인 URL에 post 요청을 보냅니다.param[:content]에서texttarea 내부의 데이터를 저장하고 발송합니다.
라우팅은 다음과 같습니다.
routes.rbpost "posts/create" => "posts#create"
posts 컨트롤러로 연결되는create 동작입니다.textarea의 데이터를posts표에 저장하기 위해posts 컨트롤러를 다음과 같이 인코딩합니다.
posts_controller.rbdef create
post = Post.new(content: params[:content])
post.save
redirect_to("/posts/new")
end
이렇게 하면posts표에 데이터를 저장할 수 있다.
다음처럼textarea를 기입하고 발송 버튼을 누르세요.
데이터베이스 확인해봐.종착역에서 다음 코드를 입력하세요.rails dbconsole
.header on
select * from posts;
id|content|string|created_at|updated_at
1|pocomaru||2020-05-23 10:37:51.509719|2020-05-23 10:37:51.509719
이렇게 하면 데이터베이스에 발언을 저장할 수 있습니다.
설정 확인
검증은 데이터베이스에 데이터를 저장할 때 필요한 제약이다.
예를 들어 어떤 사이트에 접속할 때 메일 주소와 비밀번호가 비어 있어도 접속할 수 있다면 위험하다.
그런 일을 막기 위해 존재한다.
검증을 모델로 설정합니다.
실제로 설정해 보세요.
공허한 투고를 방지하다
공허한 투고 방지의 유효성을 고려하다.
투고한 것이posts표이기 때문에 이 검증은post모델의 Post클래스 내부에 써야 합니다.
post 모델은 기본적으로 다음과 같습니다.
post.rbclass Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.
post.rbclass Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.
post.rbclass Post < ApplicationRecord
validates :content, {presence: true}
end
이렇게 하면 빈 투고를 방지할 수 있다.
발리 데이를 만나면 save를 할 수 없어요.또한, save가 성공하면 True는 되돌아오는 값으로, save가 실패하면False는 되돌아오는 값으로 돌아온다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.
posts_controller.rbdef create
post = Post.new(content: params[:content])
if post.save
redirect_to("/posts/all")
else
redirect_to("/posts/new")
end
이렇게 코드를 다시 쓰기를 통해save가 성공했을 때 방향을 바꾸고/posts/all
,save가 실패했을 때 방향을 바꾸기/posts/new
.
이렇게 하면 공백을 배제하는 투고의 유효성을 만들어 낼 수 있다.
다음은 일정 수량 이상의 문자를 삭제하는 검증을 만들어 보자.
일정 수량 이상의 문자를 방지하다
이번에는 20자 이상의 투고를 방지하는 유효기간을 설정하자.
아래와 같다.
post.rbclass Post < ApplicationRecord
validates :content, {presence: true}
validates :content, {length: {maximum: 20}}
end
이 부분validates :content, {length: {maximum: 20}}
을 통해 20자 이상 발언을 제한할 수 있다.
하지만 이처럼 유효기간만 설정하면 문제가 생긴다.20자 이상의 투고를 할 때textarea는 비어 있다.
이유는posts 컨트롤러다.알림 redirect_to("/posts/new")
이 있을 때, 루트를 통해posts 컨트롤러의 new 동작을 실행합니다.그럼 실례 변수 new.html.eb 파일에 보낼 수 없기 때문에 열심히 쓴 textarea가 비어 있습니다.
이런 상황을 방지하기 위해render
방법을 사용한다.
렌더는 렌더링할 수 있는 방법입니다. 렌더링은 브라우저에서view 파일을 읽어서 그리는 것을 말합니다.
view 파일에서render 방법을 사용하면 여러 개의view 파일의 공통 부분을 그리는 템플릿을 사용할 수 있습니다.
이번에는 컨트롤러 내부에서 사용해서 동작을 거치지 않고 렌더링을 통해 제작된 실례 변수를view 파일에 전달할 수 있습니다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.def create
post = Post.new(content: params[:content])
@content = params[:content]
if post.save
redirect_to("/posts/all")
else
render("posts/new")
end
end
@content
에 발언 내용을 저장한 후 Redirectto new 대신 render를 사용합니다.html.erb 파일을 그리는 중입니다.
이렇게 하면 실례 변수에서 업데이트할 수 있다@content
.html.eb에게 맡길 수 있습니다.
new.html.erb 파일에 이 실례 변수를 표시하기 위해서 다음과 같이 덮어씁니다.
new.html.erb<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"><%= @content%></textarea>
<input type="submit" value="送信">
<% end %>
@content
textarea의 초기값에 건네줍니다.이렇게 하면 발리에서 날이 멈췄을 때 그 값을 표시할 수 있다.
실제로 해보세요.
아래와 같이 20개 이상의 문자를 입력하고 발송을 누르세요.
별다른 변화는 없다.
끝맺다
이번엔 여기까지.
만나줘서 고마워요.
가능하다면 아래의 보도를 보십시오.
초보자를 위한 루비온 레일스 해설] ~ 플래시 설치~
Reference
이 문제에 관하여(초보자를 위한 루비온 레일스 ⑥ 발리 데이 프로듀싱~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/renesisu727/items/cee8bbea1147ff78b72d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
새로운 컨트롤러를 만들어라.
이번에는 투고를 관리하는 포스터 컨트롤러를 제작한다.터미널에서 다음 코드를 실행하십시오.
rails g controller posts all
all.html.erb 파일에 모든 투고를 표시해 주십시오.이를 위해 새 발언을 만드는 파일을 만듭니다.new.html.posts 파일에서erb 파일을 만듭시다.
이 new.html.eb 파일로 새로운 투고를 만들다.
새 모델 생성하기
그럼 투고 관리 데이터베이스를 만들자.이번에는 데이터베이스를 전혀 만들지 않았기 때문에 모델부터 만들기 시작했다.
모형은 データベースの情報を操作する仕組み
이고 データベースとのやり取りを行うクラス
라고도 할 수 있다.
모형은 보통 소문자로부터 시작하는 단수 형식으로 명명된다.왜냐하면 모델은 테이블에 하나만 존재하기 때문이다. rails g model post content: string
이렇게 모델을 만들면 데이터베이스의 설계도로 사용되는migration 파일이 만들어진다.
다음 코드를 사용하여 이전 파일을 실행합니다.rails db:migrate
데이터베이스 컨트롤러에서 만든 테이블을 확인하세요.rails dbconsole
.table
ar_internal_metadata schema_migrations
posts users
포스터 리스트 만들었는데.아래 코드로 안에 있는 내용을 보세요..schema posts
CREATE TABLE IF NOT EXISTS "posts"("id"integer PRIMARY KEY AUTOINCREMENT NOT NULL, "content"varchar, "string"varchar, "created_at"datetime NOT NULL, "updated_at"datetime NOT NULL);
발언 작성
new.html.erb 파일에 발언을 만드는 코드를 추가합니다.
new.html.erb<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"></textarea>
<input type="submit" value="送信">
<% end %>
이름이 /posts/create
인 URL에 post 요청을 보냅니다.param[:content]에서texttarea 내부의 데이터를 저장하고 발송합니다.
라우팅은 다음과 같습니다.
routes.rbpost "posts/create" => "posts#create"
posts 컨트롤러로 연결되는create 동작입니다.textarea의 데이터를posts표에 저장하기 위해posts 컨트롤러를 다음과 같이 인코딩합니다.
posts_controller.rbdef create
post = Post.new(content: params[:content])
post.save
redirect_to("/posts/new")
end
이렇게 하면posts표에 데이터를 저장할 수 있다.
다음처럼textarea를 기입하고 발송 버튼을 누르세요.
데이터베이스 확인해봐.종착역에서 다음 코드를 입력하세요.rails dbconsole
.header on
select * from posts;
id|content|string|created_at|updated_at
1|pocomaru||2020-05-23 10:37:51.509719|2020-05-23 10:37:51.509719
이렇게 하면 데이터베이스에 발언을 저장할 수 있습니다.
설정 확인
검증은 데이터베이스에 데이터를 저장할 때 필요한 제약이다.
예를 들어 어떤 사이트에 접속할 때 메일 주소와 비밀번호가 비어 있어도 접속할 수 있다면 위험하다.
그런 일을 막기 위해 존재한다.
검증을 모델로 설정합니다.
실제로 설정해 보세요.
공허한 투고를 방지하다
공허한 투고 방지의 유효성을 고려하다.
투고한 것이posts표이기 때문에 이 검증은post모델의 Post클래스 내부에 써야 합니다.
post 모델은 기본적으로 다음과 같습니다.
post.rbclass Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.
post.rbclass Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.
post.rbclass Post < ApplicationRecord
validates :content, {presence: true}
end
이렇게 하면 빈 투고를 방지할 수 있다.
발리 데이를 만나면 save를 할 수 없어요.또한, save가 성공하면 True는 되돌아오는 값으로, save가 실패하면False는 되돌아오는 값으로 돌아온다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.
posts_controller.rbdef create
post = Post.new(content: params[:content])
if post.save
redirect_to("/posts/all")
else
redirect_to("/posts/new")
end
이렇게 코드를 다시 쓰기를 통해save가 성공했을 때 방향을 바꾸고/posts/all
,save가 실패했을 때 방향을 바꾸기/posts/new
.
이렇게 하면 공백을 배제하는 투고의 유효성을 만들어 낼 수 있다.
다음은 일정 수량 이상의 문자를 삭제하는 검증을 만들어 보자.
일정 수량 이상의 문자를 방지하다
이번에는 20자 이상의 투고를 방지하는 유효기간을 설정하자.
아래와 같다.
post.rbclass Post < ApplicationRecord
validates :content, {presence: true}
validates :content, {length: {maximum: 20}}
end
이 부분validates :content, {length: {maximum: 20}}
을 통해 20자 이상 발언을 제한할 수 있다.
하지만 이처럼 유효기간만 설정하면 문제가 생긴다.20자 이상의 투고를 할 때textarea는 비어 있다.
이유는posts 컨트롤러다.알림 redirect_to("/posts/new")
이 있을 때, 루트를 통해posts 컨트롤러의 new 동작을 실행합니다.그럼 실례 변수 new.html.eb 파일에 보낼 수 없기 때문에 열심히 쓴 textarea가 비어 있습니다.
이런 상황을 방지하기 위해render
방법을 사용한다.
렌더는 렌더링할 수 있는 방법입니다. 렌더링은 브라우저에서view 파일을 읽어서 그리는 것을 말합니다.
view 파일에서render 방법을 사용하면 여러 개의view 파일의 공통 부분을 그리는 템플릿을 사용할 수 있습니다.
이번에는 컨트롤러 내부에서 사용해서 동작을 거치지 않고 렌더링을 통해 제작된 실례 변수를view 파일에 전달할 수 있습니다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.def create
post = Post.new(content: params[:content])
@content = params[:content]
if post.save
redirect_to("/posts/all")
else
render("posts/new")
end
end
@content
에 발언 내용을 저장한 후 Redirectto new 대신 render를 사용합니다.html.erb 파일을 그리는 중입니다.
이렇게 하면 실례 변수에서 업데이트할 수 있다@content
.html.eb에게 맡길 수 있습니다.
new.html.erb 파일에 이 실례 변수를 표시하기 위해서 다음과 같이 덮어씁니다.
new.html.erb<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"><%= @content%></textarea>
<input type="submit" value="送信">
<% end %>
@content
textarea의 초기값에 건네줍니다.이렇게 하면 발리에서 날이 멈췄을 때 그 값을 표시할 수 있다.
실제로 해보세요.
아래와 같이 20개 이상의 문자를 입력하고 발송을 누르세요.
별다른 변화는 없다.
끝맺다
이번엔 여기까지.
만나줘서 고마워요.
가능하다면 아래의 보도를 보십시오.
초보자를 위한 루비온 레일스 해설] ~ 플래시 설치~
Reference
이 문제에 관하여(초보자를 위한 루비온 레일스 ⑥ 발리 데이 프로듀싱~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/renesisu727/items/cee8bbea1147ff78b72d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails g model post content: string
rails db:migrate
rails dbconsole
.table
.schema posts
new.html.erb 파일에 발언을 만드는 코드를 추가합니다.
new.html.erb
<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"></textarea>
<input type="submit" value="送信">
<% end %>
이름이
/posts/create
인 URL에 post 요청을 보냅니다.param[:content]에서texttarea 내부의 데이터를 저장하고 발송합니다.라우팅은 다음과 같습니다.
routes.rb
post "posts/create" => "posts#create"
posts 컨트롤러로 연결되는create 동작입니다.textarea의 데이터를posts표에 저장하기 위해posts 컨트롤러를 다음과 같이 인코딩합니다.posts_controller.rb
def create
post = Post.new(content: params[:content])
post.save
redirect_to("/posts/new")
end
이렇게 하면posts표에 데이터를 저장할 수 있다.다음처럼textarea를 기입하고 발송 버튼을 누르세요.
데이터베이스 확인해봐.종착역에서 다음 코드를 입력하세요.
rails dbconsole
.header on
select * from posts;
id|content|string|created_at|updated_at1|pocomaru||2020-05-23 10:37:51.509719|2020-05-23 10:37:51.509719
이렇게 하면 데이터베이스에 발언을 저장할 수 있습니다.
설정 확인
검증은 데이터베이스에 데이터를 저장할 때 필요한 제약이다.
예를 들어 어떤 사이트에 접속할 때 메일 주소와 비밀번호가 비어 있어도 접속할 수 있다면 위험하다.
그런 일을 막기 위해 존재한다.
검증을 모델로 설정합니다.
실제로 설정해 보세요.
공허한 투고를 방지하다
공허한 투고 방지의 유효성을 고려하다.
투고한 것이posts표이기 때문에 이 검증은post모델의 Post클래스 내부에 써야 합니다.
post 모델은 기본적으로 다음과 같습니다.
post.rb
class Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.post.rb
class Post < ApplicationRecord
end
유효성 검사는 다음 형식으로 작성됩니다.validates :カラム名, {検証内容}
공투고 방지의 유효기간은 다음과 같다.post.rb
class Post < ApplicationRecord
validates :content, {presence: true}
end
이렇게 하면 빈 투고를 방지할 수 있다.발리 데이를 만나면 save를 할 수 없어요.또한, save가 성공하면 True는 되돌아오는 값으로, save가 실패하면False는 되돌아오는 값으로 돌아온다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.
posts_controller.rb
def create
post = Post.new(content: params[:content])
if post.save
redirect_to("/posts/all")
else
redirect_to("/posts/new")
end
이렇게 코드를 다시 쓰기를 통해save가 성공했을 때 방향을 바꾸고/posts/all
,save가 실패했을 때 방향을 바꾸기/posts/new
.이렇게 하면 공백을 배제하는 투고의 유효성을 만들어 낼 수 있다.
다음은 일정 수량 이상의 문자를 삭제하는 검증을 만들어 보자.
일정 수량 이상의 문자를 방지하다
이번에는 20자 이상의 투고를 방지하는 유효기간을 설정하자.
아래와 같다.
post.rb
class Post < ApplicationRecord
validates :content, {presence: true}
validates :content, {length: {maximum: 20}}
end
이 부분validates :content, {length: {maximum: 20}}
을 통해 20자 이상 발언을 제한할 수 있다.하지만 이처럼 유효기간만 설정하면 문제가 생긴다.20자 이상의 투고를 할 때textarea는 비어 있다.
이유는posts 컨트롤러다.알림
redirect_to("/posts/new")
이 있을 때, 루트를 통해posts 컨트롤러의 new 동작을 실행합니다.그럼 실례 변수 new.html.eb 파일에 보낼 수 없기 때문에 열심히 쓴 textarea가 비어 있습니다.이런 상황을 방지하기 위해
render
방법을 사용한다.렌더는 렌더링할 수 있는 방법입니다. 렌더링은 브라우저에서view 파일을 읽어서 그리는 것을 말합니다.
view 파일에서render 방법을 사용하면 여러 개의view 파일의 공통 부분을 그리는 템플릿을 사용할 수 있습니다.
이번에는 컨트롤러 내부에서 사용해서 동작을 거치지 않고 렌더링을 통해 제작된 실례 변수를view 파일에 전달할 수 있습니다.
posts 컨트롤러를 다음과 같은 내용으로 변경합니다.
def create
post = Post.new(content: params[:content])
@content = params[:content]
if post.save
redirect_to("/posts/all")
else
render("posts/new")
end
end
@content
에 발언 내용을 저장한 후 Redirectto new 대신 render를 사용합니다.html.erb 파일을 그리는 중입니다.이렇게 하면 실례 변수에서 업데이트할 수 있다
@content
.html.eb에게 맡길 수 있습니다.new.html.erb 파일에 이 실례 변수를 표시하기 위해서 다음과 같이 덮어씁니다.
new.html.erb
<%= form_tag("/posts/create") do %>
<textarea name="content" cols="30" rows="10"><%= @content%></textarea>
<input type="submit" value="送信">
<% end %>
@content
textarea의 초기값에 건네줍니다.이렇게 하면 발리에서 날이 멈췄을 때 그 값을 표시할 수 있다.실제로 해보세요.
아래와 같이 20개 이상의 문자를 입력하고 발송을 누르세요.
별다른 변화는 없다.
끝맺다
이번엔 여기까지.
만나줘서 고마워요.
가능하다면 아래의 보도를 보십시오.
초보자를 위한 루비온 레일스 해설] ~ 플래시 설치~
Reference
이 문제에 관하여(초보자를 위한 루비온 레일스 ⑥ 발리 데이 프로듀싱~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/renesisu727/items/cee8bbea1147ff78b72d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(초보자를 위한 루비온 레일스 ⑥ 발리 데이 프로듀싱~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/renesisu727/items/cee8bbea1147ff78b72d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)