... def new @event = Event.new end def create @event = Event.new(event_params) if @event.save ActionCable.server.broadcast "room_channel_user_#{user.id}", event: render_event(@event) else render 'new' end end private def event_params params.require(:event).permit(:user_id, :performance, :name, :tip_event, :description, :priority, :subcategory_id, :category_id) end def render_event(event) render(partial: 'event', locals: { event: event }) end ... end 

When I call ActionCable, the render (render_event) is triggered, and I need the page to show the whole event after create (that is, I need root_url instead of "/ events").

How to make a redirect?

  • What does the render_event method look like? And what will happen if create add redirect_to root_path at the end? - Vasilisa
  • Error double render, method: render (partial: 'event', locals: {event: event}) - 9karamba
  • Add to the question all the controller action code and the render_event method render_event - Vasilisa
  • Changes were made - 9karamba

1 answer 1

You need a render_to_string . It does the same, but does not set response.body , so it can be used along with other rendering or redirection.

 def create @event = Event.new(event_params) if @event.save ActionCable.server.broadcast "room_channel_user_#{user.id}", event: render_event(@event) redirect_to root_path else render 'new' end end def render_event(event) render_to_string(partial: 'event', locals: { event: event }) end 
  • Thanks, it turned out! - 9karamba
  • @ 9karamba always please :) - Vasilisa