ruby-on-rails 在Rails 7中使用format.turbo_stream时的操作控制器::未知格式

yyhrrdl8  于 2022-11-19  发布在  Ruby
关注(0)|答案(3)|浏览(138)

嘿,我是新来的turbo_streams和卡住了为什么我得到这个错误。
部分属性:

<div id="properties"
     data-action="map-marker-clicked@window->@mapmarker#mapMarkerClicked"
     data-controller="mapmarker"
     data-mapmarker-target="properties_list">
  <%= "#{@properties.length} properties" %>

  <%= turbo_stream_from "properties" %>
  <%= turbo_frame_tag "properties" do %>
    <% @properties.each do |property| %>
      <%= render property %>
      <p>
        <%= link_to "View this property", property %>
      </p>
    <% end %>
  <% end %>
</div>

和我的控制器:

def index
    @properties = location_search? ? Property::SearchByLocation.call(search_params[:value]) : Property.all

    @markers = Property::GenerateGoogleApiMapMarkers.call(property_or_properties: @properties)

    respond_to do |format|
      format.turbo_stream do
        render turbo_stream: turbo_stream.replace(@properties, partial: 'properties/properties')
      end
    end
  end

更多背景信息:我计划从一个刺激控制器触发这个重载(当用户点击谷歌Map上的一个标记时,我想用标记的坐标刷新属性部分,作为组织属性的方式(最接近标记的将显示在顶部)。
当我转到http://localhost:3000/properties时,收到操作控制器::未知格式错误

mlmc2os5

mlmc2os51#

您应该添加默认的format.html操作

ajsxfq5m

ajsxfq5m2#

第1步:创建新控制器TurboController

class TurboController < ApplicationController
  class Responder < ActionController::Responder
    def to_turbo_stream
      controller.render(options.merge(formats: :html))
    rescue ActionView::MissingTemplate => error
      if get?
        raise error
      elsif has_errors? && default_action
        render rendering_options.merge(formats: :html, status: :unprocessable_entity)
      else
        redirect_to navigation_location
      end
    end
  end
  self.responder =  Responder
  respond_to :html, :turbo_stream
end

**步骤2:**使用TurboController更新设备父控制器

文件:device.rb,即Devise初始化程序

config.parent_controller = 'TurboController'

**步骤3:**在设计导航格式中添加 turbo_stream

文件:device.rb,即Devise初始化程序

config.navigational_formats = ['*/*', :html, :turbo_stream]
dxxyhpgq

dxxyhpgq3#

遇到了相同的问题,通过将下面的行添加到config/initializers/mime_type. rb中手动注册mime类型,解决了该问题。

Mime::Type.register "text/vnd.turbo-stream.html", :turbo_sream

请参阅https://github.com/hotwired/turbo/pull/93了解一些背景信息。

相关问题