1

问题

这是一个简单的问题,我查看了 spree 论坛、plataforma tec 论坛等,但没有成功。

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

更详细的解释

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

现在,在主应用程序上,我们使用的资产集与 spree 商店中的资产集不同。我们最初的 simple_form.rb 初始化器是专门为这些资产创建的。

这就是有趣的地方。

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

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

可能的解决方案?

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

我的另一个想法是在 simple_form.rb 文件中设置某种条件,以便在我们在主应用程序上时加载一组选项,在狂欢商店中加载另一组选项......也许检查 url?

4

1 回答 1

3

好的,很明显,如何为 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

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

自定义包装器

于 2013-02-08T21:35:19.257 回答