개인 앱 개발 일기 #5
게시하거나 게시 세부 정보 표시, 삭제, 목록 표시를 구현합니다.
우선, 무엇이든
rails g controller drinks
rails g model Drink
실행
커피의 감상을 투고하는 앱이므로, 모델명이나, 컨트롤러명을 coffee로 하고 싶었습니다만,
coffee는 불가산 명사이므로, 가능한 한 피하는 것이 현명.
라고 하는 일로 drink라고 명명했습니다,,,! !
이미지도 게시하고 싶기 때문에
% brew install imagemagick
터미널에서 실행
gem 'mini_magick'
gem 'image_processing', '~> 1.2'
라는 gem을 install
bundle install
drinks_controller
class DrinksController < ApplicationController
include SessionsHelper
before_action :logged_in_user, only: [:index,:destroy]
def index
@drinks = Drink.includes(:user).order("created_at DESC")
end
def show
@drink = Drink.find(params[:id])
@user = @drink.user
@drinks = @user.drinks
end
def new
@drink = Drink.new
end
def create
@drink = current_user.drinks.build(drink_params)
if @drink.save
redirect_to drinks_path
else
redirect_to 'new'
end
end
def destroy
Drink.find(params[:id]).destroy
redirect_to root_path
end
private
def drink_params
params.require(:drink).permit(:name,:price,:explain,:image).merge(user_id: current_user.id)
end
end
def index
@drinks = Drink.includes(:user).order("created_at DESC")
end
는
목록 화면에 표시하는 게시물의 정보에는 사용자 정보도 붙어 표시됩니다.
이 경우 게시물에 연결되는 사용자 정보를 얻으려면 게시물 수와 동일한 횟수의 액세스가 필요하므로 N + 1 문제가 발생합니다.
요점은 게시물에 묶어 사용자의 정보를 일거에 취득하기 때문에 빨라지는 것입니다
def create
@drink = current_user.drinks.build(drink_params)
user.rb와 연관하여 .build라는 메소드를 사용할 수 있습니다.
이 방법을 사용하면 마음대로 user와 능숙한 느낌에 연결한 게시가 가능합니다
drink.rb
class Drink < ApplicationRecord
belongs_to :user
has_one_attached :image
with_options presence: true do
validates :name
validates :explain
end
end
with_option 메소드는 함께 검증을 설정할 수 있는 메소드입니다.
존재성뿐만 아니라 형식 검증에도 사용할 수있어 편리하므로 꼭 조사하여 사용해보십시오.
우선은 커피에 관한 투고를 해 가고 싶습니다!
투고하는 내용은 커피의 이름, 이미지, 가격, 설명입니다.
drinks/new.html.erb
<%= form_with model: @drink,local: true do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :name, placeholder: "商品名" %>
<%= f.text_field :price, placeholder: "値段" %>
<%= f.text_area :explain, placeholder: "商品の説明", rows: "10" %>
<h3>コーヒーの写真を投稿してください</h3>
<%= f.label :image %>
<%= f.file_field :image %>
<%= f.submit "SEND" %>
<% end %>
보기로 하면 이런 느낌
뭔가 올리자.
drinks/index.html.erb
<% @drinks.each do |drink| %>
<%= drink.name %>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= drink.price %>
<%= drink.explain %>
<%= link_to drink.user.nickname ,drink_path(drink) %>
<% end %>
<%= link_to "投稿する", new_drink_path %>
<%= link_to "トップページ", root_path %>
게시 후 drinks#index를 호출합니다.
레이아웃 무너지는 것입니다만 확실히 화상 첨부로 표시되고 있어 안심했습니다
다음은 투고 상세를 보자.
drinks/show.html.erb
<%= @drink.user.nickname%>
<% @drinks.each do |drink| %>
<%= drink.price%>
<span class="name"><%= drink.name %></span>
<p><%= drink.explain %></p>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= link_to "削除",drink_path(drink.id),method: :delete %>
<% end %>
지금은 투고의 상세 페이지를 누른 곳에서 살 풍경입니다만, 여기에 이 투고가 붙은 코멘트가 달라라고 표시되는 느낌으로 하고 싶네요,,,! !
삭제는 괜찮을 것입니다,,,,
대충 기본적인 기능은 할 수 있었으므로 다음 번에는 외형을 엄청 잘 해 나가고 싶습니다,,,! ! !
Reference
이 문제에 관하여(개인 앱 개발 일기 #5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divclass123/items/58d8abe578a1aa7befee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails g controller drinks
rails g model Drink
% brew install imagemagick
gem 'mini_magick'
gem 'image_processing', '~> 1.2'
bundle install
class DrinksController < ApplicationController
include SessionsHelper
before_action :logged_in_user, only: [:index,:destroy]
def index
@drinks = Drink.includes(:user).order("created_at DESC")
end
def show
@drink = Drink.find(params[:id])
@user = @drink.user
@drinks = @user.drinks
end
def new
@drink = Drink.new
end
def create
@drink = current_user.drinks.build(drink_params)
if @drink.save
redirect_to drinks_path
else
redirect_to 'new'
end
end
def destroy
Drink.find(params[:id]).destroy
redirect_to root_path
end
private
def drink_params
params.require(:drink).permit(:name,:price,:explain,:image).merge(user_id: current_user.id)
end
end
def index
@drinks = Drink.includes(:user).order("created_at DESC")
end
는
목록 화면에 표시하는 게시물의 정보에는 사용자 정보도 붙어 표시됩니다.
이 경우 게시물에 연결되는 사용자 정보를 얻으려면 게시물 수와 동일한 횟수의 액세스가 필요하므로 N + 1 문제가 발생합니다.
요점은 게시물에 묶어 사용자의 정보를 일거에 취득하기 때문에 빨라지는 것입니다
def create
@drink = current_user.drinks.build(drink_params)
user.rb와 연관하여 .build라는 메소드를 사용할 수 있습니다.
이 방법을 사용하면 마음대로 user와 능숙한 느낌에 연결한 게시가 가능합니다
drink.rb
class Drink < ApplicationRecord
belongs_to :user
has_one_attached :image
with_options presence: true do
validates :name
validates :explain
end
end
with_option 메소드는 함께 검증을 설정할 수 있는 메소드입니다.
존재성뿐만 아니라 형식 검증에도 사용할 수있어 편리하므로 꼭 조사하여 사용해보십시오.
우선은 커피에 관한 투고를 해 가고 싶습니다!
투고하는 내용은 커피의 이름, 이미지, 가격, 설명입니다.
drinks/new.html.erb
<%= form_with model: @drink,local: true do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :name, placeholder: "商品名" %>
<%= f.text_field :price, placeholder: "値段" %>
<%= f.text_area :explain, placeholder: "商品の説明", rows: "10" %>
<h3>コーヒーの写真を投稿してください</h3>
<%= f.label :image %>
<%= f.file_field :image %>
<%= f.submit "SEND" %>
<% end %>
보기로 하면 이런 느낌
뭔가 올리자.
drinks/index.html.erb
<% @drinks.each do |drink| %>
<%= drink.name %>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= drink.price %>
<%= drink.explain %>
<%= link_to drink.user.nickname ,drink_path(drink) %>
<% end %>
<%= link_to "投稿する", new_drink_path %>
<%= link_to "トップページ", root_path %>
게시 후 drinks#index를 호출합니다.
레이아웃 무너지는 것입니다만 확실히 화상 첨부로 표시되고 있어 안심했습니다
다음은 투고 상세를 보자.
drinks/show.html.erb
<%= @drink.user.nickname%>
<% @drinks.each do |drink| %>
<%= drink.price%>
<span class="name"><%= drink.name %></span>
<p><%= drink.explain %></p>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= link_to "削除",drink_path(drink.id),method: :delete %>
<% end %>
지금은 투고의 상세 페이지를 누른 곳에서 살 풍경입니다만, 여기에 이 투고가 붙은 코멘트가 달라라고 표시되는 느낌으로 하고 싶네요,,,! !
삭제는 괜찮을 것입니다,,,,
대충 기본적인 기능은 할 수 있었으므로 다음 번에는 외형을 엄청 잘 해 나가고 싶습니다,,,! ! !
Reference
이 문제에 관하여(개인 앱 개발 일기 #5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divclass123/items/58d8abe578a1aa7befee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Drink < ApplicationRecord
belongs_to :user
has_one_attached :image
with_options presence: true do
validates :name
validates :explain
end
end
<%= form_with model: @drink,local: true do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :name, placeholder: "商品名" %>
<%= f.text_field :price, placeholder: "値段" %>
<%= f.text_area :explain, placeholder: "商品の説明", rows: "10" %>
<h3>コーヒーの写真を投稿してください</h3>
<%= f.label :image %>
<%= f.file_field :image %>
<%= f.submit "SEND" %>
<% end %>
보기로 하면 이런 느낌
뭔가 올리자.
drinks/index.html.erb
<% @drinks.each do |drink| %>
<%= drink.name %>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= drink.price %>
<%= drink.explain %>
<%= link_to drink.user.nickname ,drink_path(drink) %>
<% end %>
<%= link_to "投稿する", new_drink_path %>
<%= link_to "トップページ", root_path %>
게시 후 drinks#index를 호출합니다.
레이아웃 무너지는 것입니다만 확실히 화상 첨부로 표시되고 있어 안심했습니다
다음은 투고 상세를 보자.
drinks/show.html.erb
<%= @drink.user.nickname%>
<% @drinks.each do |drink| %>
<%= drink.price%>
<span class="name"><%= drink.name %></span>
<p><%= drink.explain %></p>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= link_to "削除",drink_path(drink.id),method: :delete %>
<% end %>
지금은 투고의 상세 페이지를 누른 곳에서 살 풍경입니다만, 여기에 이 투고가 붙은 코멘트가 달라라고 표시되는 느낌으로 하고 싶네요,,,! !
삭제는 괜찮을 것입니다,,,,
대충 기본적인 기능은 할 수 있었으므로 다음 번에는 외형을 엄청 잘 해 나가고 싶습니다,,,! ! !
Reference
이 문제에 관하여(개인 앱 개발 일기 #5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divclass123/items/58d8abe578a1aa7befee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<% @drinks.each do |drink| %>
<%= drink.name %>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= drink.price %>
<%= drink.explain %>
<%= link_to drink.user.nickname ,drink_path(drink) %>
<% end %>
<%= link_to "投稿する", new_drink_path %>
<%= link_to "トップページ", root_path %>
<%= @drink.user.nickname%>
<% @drinks.each do |drink| %>
<%= drink.price%>
<span class="name"><%= drink.name %></span>
<p><%= drink.explain %></p>
<%= image_tag drink.image.variant(resize: '500x250') if drink.image.attached? %>
<%= link_to "削除",drink_path(drink.id),method: :delete %>
<% end %>
지금은 투고의 상세 페이지를 누른 곳에서 살 풍경입니다만, 여기에 이 투고가 붙은 코멘트가 달라라고 표시되는 느낌으로 하고 싶네요,,,! !
삭제는 괜찮을 것입니다,,,,
대충 기본적인 기능은 할 수 있었으므로 다음 번에는 외형을 엄청 잘 해 나가고 싶습니다,,,! ! !
Reference
이 문제에 관하여(개인 앱 개발 일기 #5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/divclass123/items/58d8abe578a1aa7befee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)