This page is part of a series that describes building a complete todo list application with LiveComponent. Please consider reading it from the beginning.
<div class="TodoItem"> <% if @editing %> <%= form_with(model: @todo_item) do |f| %> <%= f.text_field :text %> <%= f.submit %> <% end %> <% else %> <%= @todo_item.text %> <%= button_tag( "Edit", data: { target: "click->todoitemcomponent#edit" } ) %> <% end %> </div>
<div class="TodoItem"> <% if @editing %> <%= form_with(model: @todo_item) do |f| %> <%= f.text_field :text %> <%= f.submit %> <% end %> <% else %> <%= @todo_item.text %> <%= button_tag( "Edit", data: { target: "click->todoitemcomponent#edit" } ) %> <% end %> </div>
<div class="TodoItem"> <% if @editing %> <%= form_with(model: @todo_item, rerender: :self) do |f| %> <%= f.text_field :text %> <%= f.submit %> <% end %> <% else %> <%= @todo_item.text %> <%= button_tag( "Edit", data: { target: "click->todoitemcomponent#edit" } ) %> <% end %> </div>
<div class="TodoItem"> <% if @editing %> <%= form_with(model: @todo_item, rerender: :self) do |f| %> <%= f.text_field :text %> <%= f.submit %> <% end %> <% else %> <%= @todo_item.text %> <%= button_tag( "Edit", data: { target: "click->todoitemcomponent#edit" } ) %> <% end %> </div>
class TodoItemsController < ApplicationController def update @todo_item = TodoItem.find(params[:id]) @todo_item.update(todo_item_params) end private def todo_item_params params.require(:todo_item).permit(:text) end end
class TodoItemsController < ApplicationController def update @todo_item = TodoItem.find(params[:id]) @todo_item.update(todo_item_params) end private def todo_item_params params.require(:todo_item).permit(:text) end end
<%= turbo_frame_tag(id: "todo_item_#{@todo_item.id}") do %> <%= render(TodoItemComponent.new(todo_item: todo_item)) %> <% end %>
<%= turbo_frame_tag(id: "todo_item_#{@todo_item.id}") do %> <%= render(TodoItemComponent.new(todo_item: todo_item)) %> <% end %>
<%= live.rerender(todo_item: @todo_item, editing: false) %>
<%= live.rerender(todo_item: @todo_item, editing: false) %>
class TodoItemsController < ApplicationController def update @todo_item = TodoItem.find(params[:id]) @todo_item.update(todo_item_params) respond_to do |format| format.turbo_stream do render turbo_stream: live.rerender(todo_item: @todo_item, editing: false) end end end private def todo_item_params params.require(:todo_item).permit(:text) end end
class TodoItemsController < ApplicationController def update @todo_item = TodoItem.find(params[:id]) @todo_item.update(todo_item_params) respond_to do |format| format.turbo_stream do render turbo_stream: live.rerender(todo_item: @todo_item, editing: false) end end end private def todo_item_params params.require(:todo_item).permit(:text) end end