혼잣말 앱을 만들어 보도록 하겠습니다.
14340 단어 Rails
우선,edit 조작을 사용하여 트위터 편집 페이지로 이동하는 과정을 실현한다.
라우팅 구성
config/routes.rb
Rails.application.routes.draw do
https://guides.rubyonrails.org/routing.html
root to: 'tweets#index'
resources :tweets, only: [:index, :new, :create, :destroy, :edit]
end
편집 작업으로 라우팅되었습니다.
뷰에서 편집 버튼과 편집 페이지에 대한 링크를 설정합니다.
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 '編集', edit_tweet_path(tweet.id), method: :get %>
<%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %>
</div>
<% end %>
</div>
컨트롤러를 위한edit 동작을 정의합시다.
새 게시물과 달리 이미 존재하는 기록을 선택하고 내용을 덮어씁니다.
편집할 기록을 대입@tweet하여 편집 화면에서 사용할 수 있도록 보기에 전달합니다.
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]) #編集したいつぶやきを取得して@tweetへ代入
end
private
def tweet_params
params.require(:tweet).permit(:name,:text,:image)
end
end
다음은 보기 파일을 만드는 것입니다.app/views/tweets 디렉터리에서 편집합니다.html.erb라는 보기 파일을 만듭니다.
app/views/tweets/edit.html.erb
<div class="contents_form">
<div class="container_box">
<h3>編集する</h3>
<%= form_with(model: @tweet, local: true) do |form| %>
<%= form.text_field :name, placeholder: "ニックネーム", class: 'container'%>
<%= form.text_area :text, placeholder: "text", rows: "10", class: 'container'%>
<%= form.file_field :image %>
<%= form.submit "つぶやく", class: 'container'%>
<% end %>
</div>
</div>
다음은 혼잣말 업데이트 기능을 실시합니다.
라우팅 설정
혼잣말을 업데이트할 때 PATCH 방법으로/tweets/'편집된 트위터의 id'에 접근합니다.
트위터 컨트롤러가 업데이트 작업을 수행할 수 있도록 합니다.
config/routes.rbRails.application.routes.draw do
root to: 'tweets#index'
resources :tweets, only: [:index, :new, :create, :destroy,:edit,:update]
end
레일스 루트로 경로를 확인하겠습니다.
PATCH /tweets/:id(.:format) tweets#update
HTTP 메서드의 PATCH가 표시됩니다.이걸로 할게요.
다음 단계는 컨트롤러를 설정하는 것이다.
app/controllers/tweets_controller.rbclass 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
private
def tweet_params
params.require(:tweet).permit(:name,:text,:image)
end
end
app/views/tweets 디렉터리의 업데이트입니다.html.erb라는 보기 파일을 만듭니다.
app/views/tweets/update.html.erb<div class="contents row">
<div class="success">
<h3>更新が完了しました。</h3>
<a class="btn" href="/">投稿一覧へ戻る</a>
</div>
</div>
아래의 행동이라면 성공이다.
Reference
이 문제에 관하여(혼잣말 앱을 만들어 보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/masakichi_eng/items/9d84bcd9bc3f15c48593
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails.application.routes.draw do
root to: 'tweets#index'
resources :tweets, only: [:index, :new, :create, :destroy,:edit,:update]
end
PATCH /tweets/:id(.:format) tweets#update
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
private
def tweet_params
params.require(:tweet).permit(:name,:text,:image)
end
end
<div class="contents row">
<div class="success">
<h3>更新が完了しました。</h3>
<a class="btn" href="/">投稿一覧へ戻る</a>
</div>
</div>
Reference
이 문제에 관하여(혼잣말 앱을 만들어 보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masakichi_eng/items/9d84bcd9bc3f15c48593텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)