【问题标题】:where to put partials for rails_admin viewsrails_admin 视图的局部放置位置
【发布时间】:2014-01-06 05:54:45
【问题描述】:

我正在尝试使用部分自定义我在 rails_admin 中的编辑视图。在 config/initializers/rails_admin.rb 我有:

RailsAdmin.config do |config|

  config.model 'Album' do
    edit do
      field :promotion do
        partial :hello_world
      end
    end
  end

end

我还尝试了可以​​在 rails_admin wiki 上找到的其他语法:

RailsAdmin.config do |config|

  config.model 'Album' do
    edit do
      field :promotion do
         def render
            bindings[:view].render :partial => carrierwave.to_s, :locals => {:field => self, :form => bindings[:form]}
         end
      end
    end
  end

end

我的部分内容位于 app/views/rails_admin/main/_hello_world.html.erb:

<h1>Hello World!</h1>

重新启动我的服务器后,编辑视图中除了一个空的“促销”字段之外什么都没有显示。

Rails_admin 对此有一个 github 问题。讨论似乎没有定论,在任何人确认该解决方案对他们有效之前,问题就已经解决了。问题可以在这里查看:

https://github.com/sferik/rails_admin/issues/787

版主为问题创建规范,然后将其关闭。可以在此文件的最底部查看规范:

https://github.com/sferik/rails_admin/blob/59da00303ca2162089b7dd7653a2f19494fb74b4/spec/unit/config/fields/base_spec.rb

我对规范的担忧是它没有测试 rails_admin 在哪里寻找部分。根据 rails_admin wiki partials 应该位于 app/views/rails_admin/main/

请帮助我了解我做错了什么,或者至少请向我保证 rails_admin 在这里没有问题。我正在使用 Rails 4 和 Ruby 2.0.0

【问题讨论】:

    标签: rspec ruby-on-rails-4 partial-views rails-admin


    【解决方案1】:

    我对 rspec 没有这样的经验,但是查看了 rails_admin 的 github 链接,文章提到了两种不同的调用部分的方法,我总是使用第二个选项。

    因此,对于您,我建议您尝试像这样调用您的部分:

    <%= render partial: "hello_world", locals: { promotion: promotion, Album: album } %>
    

    如果这不起作用,请告诉我:)

    【讨论】:

    • 当我尝试你的语法时,错误是未定义的变量'promotion'。我还尝试遵循这样的 rails_admin wiki 示例: field :promotion do def render bindings[:view].render :partial => hello_world.to_s, :locals => {:field => self, :form => bindings [:form]} end end 这也不起作用。页面上没有效果。好的,我的下一个 StackOverflow 问题是关于 mini-Markdown 的。
    【解决方案2】:

    查看rails-admin 文档中提供的语法,似乎在两个示例中部分都被呈现为字符串,而 not 被呈现为符号。尝试将您的代码更改为以下内容:

    RailsAdmin.config do |config|
    
      config.model 'Album' do
        edit do
          field :promotion do
            partial "hello_world"
          end
        end
      end
    
    end
    

    如果这不能解决问题,我会推荐 gem jazz-hands。这是一个内置了pry-stack-explorer 的调试包。我将它与binding.pryraise 结合使用,以便调试流程或进入方法并查看发生了什么。

    我敢打赌,您将能够追踪 gem 的哪个部分实际呈现视图。使用 gems 时,我发现深入研究各自的代码库以找出幕后发生的事情是很常见的。祝你好运!

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2019-10-07
      相关资源
      最近更新 更多