방법 - 레일 터보
왜 터보인가
NO JS?!
애플리케이션이 단순한 구식 1 요청 1 뷰보다 더 '동적'이어야 하는 경우 일반적으로 자바스크립트 또는 React와 같은 완전한 자바스크립트 프레임워크를 사용하여 페이지를 단일 페이지 애플리케이션으로 전환하지만 이는 번거로운 작업입니다. 하나의 개발자로서 스택을 유지하는 능력의 레일스 정신.
Turbo는 Rails 애플리케이션에서 자바스크립트에 대한 요구 사항을 줄이고 단일 페이지 애플리케이션처럼 만듭니다(대체는 아니지만).
이것은 레일 애플리케이션에서 터보를 실행하고 사용하는 빠른 '방법'입니다.
레일에서 터보를 사용하는 방법, 크레딧은 https://hotwired.dev/에 있습니다. 터보에 대한 설명서를 확인하려면 https://turbo.hotwired.dev/handbook/introduction을 참조하십시오.
요구 사항
최소 rails 6 앱(rails 7 앱에 자동으로 설치됨), rails 6에 설치하려면 https://github.com/hotwired/turbo-rails#:~:text=Add%20the%20turbo,Turbo%20Stream%20broadcasting을 참조하십시오.
Rails 7 앱에서 처음부터 단계별 프로세스.
전제 조건
rails -v
Rails 7.0.2.4
그리고ruby -v
ruby 3.0.0p0
그렇지 않으면 기계에 레일을 설치하려면 https://guides.rubyonrails.org/getting_started.html을 참조하십시오.실행
rails new turbo-example
cd turbo-example
및 실행rails s
을 통해 작동하는지 확인합니다.Listening on http://localhost:3000/items
와 같은 내용이 표시되어야 합니다.다음으로 간단한 모델 '항목'을 만들어 보겠습니다.
rails g scaffold Item title:string description:text
및 rake db:migrate
브라우저에서
http://localhost:3000/items
또는 가지고 있는 URL로 이동하면 매우 비어 있는 항목 목록을 볼 수 있습니다.Turbo_frame
app/views/items/index.html.erb
로 이동하여 마지막 줄 '새 항목'을<%= turbo_frame_tag "new_item" do %>
<%= link_to "New item", new_item_path %>
<% end %>
이제
app/views/items/new.html.erb
로 이동하여 양식 렌더링을 다음과 같이 래핑합니다.<%= turbo_frame_tag "new_item" do %>
<%= render "form", item: @item %>
<% end %>
이제 인덱스의 항목 목록에 터보 프레임이 있습니다. 새 항목을 클릭하거나 생성할 때 페이지가 다시 로드되지 않는 것을 볼 수 있습니다. 그러나 새 항목을 실제로 보려면 새로고침해야 합니다.
이를 위해 turbo_stream을 사용할 수 있습니다.
Turbo_stream
app/views/items/index.html.erb
로 이동항목 div 위에
<%= turbo_stream_from @items %>
를 추가합니다.그래서 그것은 보인다
<h1>Items</h1>
<%= turbo_stream_from @items %>
<div id="items">
<% @items.each do |item| %>
<%= render item %>
<p>
<%= link_to "Show this item", item %>
</p>
<% end %>
</div>
<%= turbo_frame_tag "new_item" do %>
<%= link_to "New item", new_item_path %>
<% end %>
다음으로
app/models/item.rb
로 이동하여 broadcasts
를 추가합니다.이렇게 하면 모델이 발생하는 모든 일을 브로드캐스트할 수 있습니다(업데이트 생성 및 삭제). 이것은 인증 권한과 관계가 없으므로 명심하십시오.
이제
app/controllers/items_controller.rb#create
로 이동성공적인 저장 렌더링에
format.turbo_stream
추가그것은 다음과 같아야합니다
def create
@item = Item.new(item_params)
respond_to do |format|
if @item.save
format.turbo_stream
format.html { redirect_to item_url(@item), notice: "Item was successfully created." }
format.json { render :show, status: :created, location: @item }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
마지막으로 콘텐츠
app/views/items/create.turbo_stream.erb
로 생성<%= turbo_stream.prepend "items", @item %>
양식은 여전히 동일합니다. 추가하여 이 문제를 해결할 수 있습니다.
<%= turbo_stream.replace "new_item", partial: 'items/form', locals: { item: Item.new } %>
app/views/items/create.turbo_stream.erb
에서파일은 다음과 같습니다
<!-- Refresh preview list -->
<%= turbo_stream.prepend "items", @item %>
<!-- Reset form -->
<%= turbo_stream.replace "new_item", partial: 'items/form', locals: { item: Item.new } %>
이 정확한 단계별 가이드의 예제 프로젝트는 https://github.com/nicho1991/turbo-example에서 찾을 수 있습니다.
Reference
이 문제에 관하여(방법 - 레일 터보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nicho1991/how-to-rails-turbo-mn8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)