혼잣말 앱을 만들어 보도록 하겠습니다.

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.rb
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
HTTP 메서드의 PATCH가 표시됩니다.이걸로 할게요.
다음 단계는 컨트롤러를 설정하는 것이다.
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

  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>
아래의 행동이라면 성공이다.

좋은 웹페이지 즐겨찾기