Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 演示者中的模板路径问题(ActionView::Template::Error(缺少部分…)_Ruby On Rails_Ruby_Ruby On Rails 5_Ruby On Rails 5.2_Presenter - Fatal编程技术网

Ruby on rails 演示者中的模板路径问题(ActionView::Template::Error(缺少部分…)

Ruby on rails 演示者中的模板路径问题(ActionView::Template::Error(缺少部分…),ruby-on-rails,ruby,ruby-on-rails-5,ruby-on-rails-5.2,presenter,Ruby On Rails,Ruby,Ruby On Rails 5,Ruby On Rails 5.2,Presenter,我将render_listable helper移动到演示器中,现在我的渲染路径错误,因为渲染方法无法看到模板 如何修复模板路径的路径? 错误 ActionView::Template::Error(缺少部分搜索/\u列表\u带有 {:locale=>[:en],:formats=>[:html,:text,:js,:css,:ics,:csv,:vcf, :vtt,:png,:jpeg,:gif,:bmp,:tiff,:svg,:mpeg,:mp3,:ogg,:m4a, :webm,:mp4,

我将render_listable helper移动到演示器中,现在我的渲染路径错误,因为渲染方法无法看到模板

如何修复模板路径的路径? 错误 ActionView::Template::Error(缺少部分搜索/\u列表\u带有 {:locale=>[:en],:formats=>[:html,:text,:js,:css,:ics,:csv,:vcf, :vtt,:png,:jpeg,:gif,:bmp,:tiff,:svg,:mpeg,:mp3,:ogg,:m4a, :webm,:mp4,:otf,:ttf,:woff,:woff2,:xml,:rss,:atom,:yaml, :multipart_form,:url_encoded_form,:json,:pdf,:zip,:gzip], :variants=>[],:handlers=>[:raw,:erb,:html,:builder,:ruby, :coffee,:jbuilder]}。在中搜索:):

应用程序演示者 注: 我注意到,如果我在中传递viewcontext,而不是使用ActionController::Base.helpers方法(h方法),它就会工作

但是,我更希望不必在上下文中传递视图。 所以当我从视野中呼叫

listing.listable\u type(self)

但是我想要


listing.listable\u type

正确的路径是什么?在您的错误中,在
中搜索后会出现什么:
?@jvillian已更新。感谢这些奇怪的方法,如“h”或“routes”这是一个糟糕设计理念的标志。也许你只需要一个助手方法,而不是演示者类。我需要更好地组织我的助手,所以我将他们转移给演示者。为什么他们的设计不好?
>     3:     <div class="col-md-12 vertical-right">
>     4:            <% if listings && listings.size > 0 %>
>     5:                <% listings.each do |listing_object| %>
>     6:           <%= listing_object.render_listable %>
>     7:                    <hr/>
>     8:                <% end %>
>     9:
> 
class ListingPresenter < ApplicationPresenter

  def render_listable
    case listable_type
    when "Car"
      h.render partial: "search/listing_car", locals: { listing: self }
    when "Truck"
      h.render partial: "search/listing_truck", locals: { listing: self }
    else
      "NO TEMPLATE RENDERED"
    end
  end
end
class ApplicationPresenter
  delegate_missing_to :@object


  def initialize(object)
    @object = object
  end

  def h
    ActionController::Base.helpers
  end

  def routes
    Rails.application.routes.url_helpers
  end 

  def self.present(obj, presenter_class = nil)
    klass = presenter_class || presenter_name(obj).constantize
    klass.new obj 
  end

  def self.wrap_collection(collection)
    collection.map { |obj| self.present(obj) }
  end

  private

  def self.presenter_name(model)
    if model.class == Listing
      "#{model.listable_type}Presenter"
    else
      "#{model.class}Presenter"
    end
  end
end
  def render_listable(view_context)
    case listable_type
    when "Car"
      view_context.render partial: "search/listing_car", locals: { listing: self }
    when "Truck"
      view_context.render partial: "search/listing_truck", locals: { listing: self }
    else
      "NO TEMPLATE RENDERED"
    end
  end