Rails将部分添加到Simpleform自定义输入

时间:2012-08-29 04:42:23

标签: ruby-on-rails-3 simple-form

我正在创建一个自定义的SimpleForm输入。它使用javascript模式弹出窗口来选择值。

如果我在表单视图中包含模态部分,我基本上可以使用它,但我希望自定义输入将部分推送到模板。

然而,我无法让它发挥作用。我正在尝试这个,但它没有正确地呈现部分。

class ProductCategoryImageSelectInput < SimpleForm::Inputs::CollectionSelectInput
  def input

  html = ''
  html << '<a href="#myModal" role="button" data-toggle="modal">Launch demo modal</a>'

  File.open("#{Rails.root}/app/views/product_categories/_browse_modal.html.erb", 'r') do |f|
    html << f.read
  end

  end
end

有什么想法?

修改

我显然对于发布屏幕截图的用户来说太新了,但这里是指向功能差异的链接:

当我在表单中嵌入模态代码时,我得到了这个,这是所需的功能: working

当我尝试将模态代码放入自定义输入时,我得到了这个: not working

2 个答案:

答案 0 :(得分:6)

您还可以使用分配给名为SimpleForm::FormBuilder的实例变量的@builder实例从自定义输入中呈现部分:

class ProductCategoryImageSelectInput < SimpleForm::Inputs::CollectionSelectInput
  def input
    @builder.template.render(partial: 'product_categories/browse_modal', locals: { foo: 'bar'})
  end
end

答案 1 :(得分:0)

奇怪的是,似乎我已经回答了here。 这对你有用吗?

ERB.new(f.read).result(binding)

PS:使用ERB而不是HAML更新。