如何使用两个不同的simple_form.rb初始化文件?

时间:2013-02-04 23:53:52

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

问题

这是一个简单的问题,我已经浏览过狂欢论坛,plataforma tec论坛和SO而没有成功。

我们想要使用两个单独的simple_form配置,一个用于我们的主应用程序,另一个用于我们已安装在特定URL上的狂欢引擎商店。

更详细的解释

目前我们正在使用spree引擎开发应用程序。这意味着狂欢引擎安装在特定的URL上,例如,通过访问mysite.com/store来激活。

现在,在主应用程序中,我们使用的是一组不同于狂欢商店的资产。我们最初的simple_form.rb初始化程序是专门为这些资产创建的。

这是有趣的地方。

在狂欢引擎中,我们也在使用simple_form开发一个新表单。它工作正常,但它使用我们的主应用程序的simple_form.rb文件,它使用主应用程序的css标记和标​​记。

我们需要修改simple_form.rb文件以实际使用spree模板的css,以便正确显示内容。

可能的解决方案?

理想情况下,我们应该为spree引擎提供一个simple_form.rb文件,为主应用程序提供一个文件,但我还没有想出这样做的直接方法......

我的另一个想法是在simple_form.rb文件中有一些条件,以便当我们在主应用程序时加载一组选项,并在狂欢商店中加载另一组选项...也许检查网址?

1 个答案:

答案 0 :(得分:2)

好的,显然如何为simple_form提供单独的配置非常明显。

一切都进入一个simple_form.rb初始化程序。唯一改变的是config.wrapper。

SimpleForm.setup do |config|
  # Wrappers are used by the form builder to generate a
  # complete input. You can remove any component from the
  # wrapper, change the order or even add your own to the
  # stack. The options given below are used to wrap the
  # whole input.
  config.wrappers :default, :class => :input do |b|
    # config goes here
  end

  config.wrappers :special, :class => input do |b|
    # special config goes here
  end

  config.default_wrapper = :default
end

然后在您的代码中,如果您想使用:special包装器,只需在输入中写入

f.input :name, :wrapper => :special

你可以在这里找到更多信息

Custom Wrappers