[Ruby on rails] 7가지 액션 이외의 액션 설정

2565 단어 Rails초학자용

소개



프리마 어플의 팀 개발을 하고 있을 때의 멤버로부터의 질문으로, 「상품 구입 완료의 페이지를 작성하고 있지만, 편집(edit)이나 삭제(destroy)는 알지만 구입 완료는 어떤 액션을 사용하면 좋은지 모른다』라는 것이 있었으므로 조사한 것을 비망록으로 남겨 둡니다.

결론



우선 그 때 취한 선택으로서 임의의 액션을 만드는 것으로 했습니다.
이번의 경우에는 완료(done)라고 했습니다.
(바르게는 구입 완료이므로 Purchase completed입니다만・・・)
그래서 무사히 해결! !
라는 이유로는 가지 않습니다.
이번 논점은 기본의 7개의 액션 이외의 액션을 추가했을 때의 대응입니다.

7가지 액션이란?



7개의 액션이란, rails로 정의되고 있는 메소드로 다음의 것을 말합니다.


액션
역할        


색인
목록보기      

show
상세를 표시한다     

새로운
게시 양식을 표시합니다.

create
리소스 추가하기

edit  
업데이트 양식 보기

update  
리소스를 업데이트합니다.

destroy  
리소스 삭제하기


이것을 routes.rb로 설정할 때 resources 메소드를 사용할 것이라고 생각합니다.

routes.rb(예)
Rails.application.routes.draw do
  resources :items
end

7개의 액션은 각각에 주어진 역할이 있으므로 기능을 추가했을 때는 우선은 이 7개의 액션 중 어느 것에 들어맞는가를 생각합니다.

7개의 액션 이외의 액션의 경우



위의 resouces 메소드로 7개의 액션을 자동으로 정의할 수 있습니다만, 이번과 같이 7개의 액션 이외의 액션(done)을 추가하는 경우는 어떻게 하면 좋을까요?

· 수집 및 멤버



7가지 기본 액션 이외에 라우팅을 정의할 때는 collection 또는 member를 이용합니다.
collection은 라우팅에 : ​​id가 붙지 않는다, member는 : id가 붙는다. 라는 차이가 있습니다.
이번 구매 완료(done)는 특히 id를 지정할 필요가 없는 단순한 통지의 페이지의 작성이 되기 때문에 collection를 사용합니다.

이번 구현에서는 상품 구입에 관련된 orders 컨트롤러에 액션을 추가했습니다.

orders_controller.rb
class OrdersController < ApplicationController

  def show
      省略
  end

  def create
      省略
   redirect_to action: :done ⬅️ 購入が完了したらdoneに移動してもらう
  end

  def done ⬅️ 今回追加されたアクション

  end


end

계속 라우팅

routes.rb
resources :orders, only: [:show, :create] do
   collection do ⬅️ 今回はcollectionを使用(idは不要)
    get 'done'
   end
end

그리고는 done의 html과 css를 작성해 구입 완료 페이지를 작성한다! !

이것으로 완성! ! 참고한 기사: htps : // 피카와카. 코 m / 라이 ls / 레소 r 세 s # 메 m r % 에 3 % 81 % 아 8 코 c 치온

마지막으로



스쿨에서의 팀 개발의 기간도 얼마 안 되었습니다.
지금까지 함께 배워온 동료들에게 감사의 마음을 담아 사소한 일이라도 기록에 두고 싶습니다.
여기까지 보아 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기