在哪里放置rails_admin视图的部分

时间:2013-12-18 07:02:21

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

我正在尝试使用partial来自定义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查找partial的位置。根据rails_admin wiki,partials应该是app / views / rails_admin / main /

中的位置

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

2 个答案:

答案 0 :(得分:0)

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

所以对你来说,我建议你试试这样的部分:

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

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

答案 1 :(得分:0)

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

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结合使用,以便调试流程或逐步进入方法,看看发生了什么。

我打赌你能够追踪宝石实际渲染视图的哪个部分。当使用宝石时,我发现深入挖掘相应的代码库来弄清楚幕后发生的事情是很常见的。祝你好运!