Help! I'm relatively new to Ruby on Rails and now I'm attempting to use Rails 7 with Turbo and Stimulus to update a partial on my web page.
I have buttons on a page within a partial (call it _home.html.erb). When clicked I'd like them to replace _home.html.erb with a different partial.
Let me show you what I've done so far:
view:
index.html.erb
<%= turbo_frame_tag "main-speaker-div" do %>
<%= render partial: 'home' %>
<% end %>```
_home.html.erb
<div >
<div >
<%= button_to "Settings", rendersettings_path(), remote: true, class: "reader-general-button"%>
</div>
</div>
controller:
def rendersettings
broadcast_replace_to "main-speaker-div", partial: 'settings'
end
This code is throwing the following error: POST 500 http://localhost:3000/rendersettings (Internal Server Error) Response has no matching element
Server console error: NoMethodError (undefined method `broadcast_replace_to' for #HreaderController:0x0000000002be30):
Thanks in advance for your help!
CodePudding user response:
method broadcast_replace_to
is supposed to be called on an object of Model. I guess in your case you must have an Object of header, and this method would be called as @header.broadcast_replace_to
CodePudding user response:
I actually ended up doing the following to with my view to fix this issue:
<%= turbo_stream_from "main-speaker-div" %>
<%= turbo_frame_tag "main-speaker-div" do %>
<turbo-frame id="main-speaker-div">
<%= render partial: 'homefull' %>
</turbo-frame>
<% end %>
It seems like if I am broadcasting I would need to have the turbo_stream_from tag added as a listener. Please point out any issues you see with this! I'm basically doing trial and error since this is so new to RoR