혼잣말 앱 만들어볼까 ⑦
14311 단어 Rails
show 작업의 경로를 설정합니다.
config/routes.rb
Rails.application.routes.draw do
root to: 'tweets#index'
resources :tweets, only: [:index, :new, :create, :destroy, :edit, :update, :show]
end
7개의 동작이 있기 때문에 only 옵션이 필요하지 않으니 요약해 보세요.config/routes.rb
Rails.application.routes.draw do
root to: 'tweets#index'
resources :tweets
라우팅이 설정되었습니다.
첫 페이지의 보기를 편집하세요.
app/views/tweets/index.html.erb
<div class="contents row">
<% @tweets.each do |tweet| %>
<div class="content_post" >
<p><%= tweet.text %></p>
<p><%= image_tag tweet.image.variant(resize: '500x500'), class: 'tweet-image' if tweet.image.attached?%></p>
<span class="name">
<%= tweet.name %>
</span>
<%= link_to '詳細', tweet_path(tweet.id), method: :get %>
<%= link_to '編集', edit_tweet_path(tweet.id), method: :get %>
<%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %>
</div>
<% end %>
</div>
컨트롤러가 쇼 동작을 추적하도록 하세요.app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
def index
@tweets = Tweet.all
end
def new
@tweet = Tweet.new
end
def create
Tweet.create(tweet_params)
end
def destroy
tweet = Tweet.find(params[:id])
tweet.destroy
end
def edit
@tweet = Tweet.find(params[:id])
end
def update
tweet = Tweet.find(params[:id])
tweet.update(tweet_params)
end
def show
@tweet = Tweet.find(params[:id])
end
private
def tweet_params
params.require(:tweet).permit(:name,:text,:image)
end
end
세부 페이지 뷰를 설정합니다.app/views/tweets/show.html.erb
<div class="contents row">
<div class="content_post" >
<p><%= tweet.text %></p>
<p><%= image_tag tweet.image.variant(resize: '500x500'), class: 'tweet-image' if tweet.image.attached?%></p>
<span class="name">
<%= tweet.name %>
</span>
<%= link_to '編集', edit_tweet_path(tweet.id), method: :get %>
<%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %>
</div>
</div>
아래의 행동이라면 성공이다.이상의 기능으로 완성되었습니다.
그러나 컨트롤러의 설명을 보면 같은 기술이 반복적으로 사용된다.
같은 처리를 하나로 정리하고 재구성하자.
before_action
컨트롤러에 의해 정의된 작업을 수행하기 전에 일반적인 작업을 수행할 수 있습니다.
class コントローラ名 < ApplicationController
before_action :処理させたいメソッド名
왜냐하면 편집 동작과 쇼 동작의 기술은 똑같기 때문에.set_tweet 이 동작은 before_로 요약됩니다.액션으로 설정하세요.
app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
before_action :set_tweet, only: [:edit, :show]
def index
@tweets = Tweet.all
end
def new
@tweet = Tweet.new
end
def create
Tweet.create(tweet_params)
end
def destroy
tweet = Tweet.find(params[:id])
tweet.destroy
end
def edit
end
def update
tweet = Tweet.find(params[:id])
tweet.update(tweet_params)
end
def show
end
private
def tweet_params
params.require(:tweet).permit(:name, :image, :text)
end
def set_tweet
@tweet = Tweet.find(params[:id])
end
end
Reference
이 문제에 관하여(혼잣말 앱 만들어볼까 ⑦), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masakichi_eng/items/3a379e40e694a85c80ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)