【问题标题】:Render more-like-this view from button从按钮渲染更像这样的视图
【发布时间】:2019-04-26 10:48:36
【问题描述】:

我想在 Blacklight (7.0.1) 中从 Solr (7.5.0) 的搜索结果创建一个按钮,单击该按钮应呈现更像此视图。

我尝试将按钮包含在 catalog_controller 中,并通过辅助函数调用更像这样的视图。 还尝试在 routes.rb 中定向路由。

catalog_controller:

config.add_index_field 'id', helper_method: :more_like_this

辅助函数

def more_like_this
render_document_sidebar_partial
end

catalog_helper_behavior.rb

def render_document_sidebar_partial(_document = @document)
  render partial: 'show_sidebar'
end

给我以下错误:

No route matches {:action=>"show", :controller=>"bookmarks", :id=>nil}, missing required keys: [:id]

如何正确传递 id?

我只是希望 Blacklight 在按下按钮时在右侧边栏中呈现更像这样的视图。

提前致谢。

【问题讨论】:

  • 您可能希望将您的show_sidebar 部分添加到您的问题中。在那里,您可能正在调用路径助手(可能是bookmark_path?),但没有将id 传递给助手。这可能是因为您在没有任何locals 的情况下调用render partial:。很难说。
  • 谢谢,但是我如何通过当地人?以下本杰明的建议无效。

标签: ruby-on-rails solr blacklight


【解决方案1】:

您发布的内容有两个问题: 1. show_sidebar 部分期望有一个本地调用的文档,所以应该用类似的方式调用:

 render partial: "show_sidebar", locals: { document: _document }
  1. Blacklight 字段的 helper_method 配置标识了一个期望使用参数散列调用的方法,该散列至少具有 SolrDocument 的 :document 键和字段名称的 :field 键 - more_like_this 方法是 Rails 帮助器(也就是说,它返回一个 html_safe 字符串),而不是 Blacklight 字段值助手。

【讨论】:

  • 感谢您的建议,但现在我得到未定义的局部变量或方法 `_document' 应该在哪里定义?
  • 您发布的方法有一个名为_document的参数;您是否可以根据 rubocop 指令更改名称?
【解决方案2】:

也许您缺少书签的 index 操作(在您的路由中,也可能在您的控制器中)。

您要访问的网址可能是 /bookmarks,但您的路线中只有 get "/bookmarks/:id" 之类的内容,因此找不到所需的 :id 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2012-07-20
    • 2016-08-24
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多