0

我正在使用 simple_form gem。我有一个相当简单的场景。我有一个范围路由,我正在尝试获取一个表单:

= simple_form_for(@scope, @post) do |f|
  = f.input :comment

简化的路由文件:

scope ':scope' do
  resources :posts
end

但是我得到了错误:

undefined method `input' for #<ActionView::Helpers::FormBuilder:0x7f1b1eef1cb8> 

我正在使用 rails 3.0.12 和 simple_form 1.4.2

任何建议我哪里出错了?

4

3 回答 3

3

之所以发生这种情况,是因为simple_form_forfor_form也因为simple_form_for只是对其的方法委托)接收选项散列作为第二个参数。所以你@post被解释为选项,防止 SimpleForm 更改表单构建器。

使用作用域资源的正确方法是使用这样的数组:

= simple_form_for([@scope, @post]) do |f|
  = f.input :comment
于 2012-04-25T14:17:26.680 回答
0

解决这个问题的一种方法(虽然不理想是使用 simple_fields。我会坚持下去,直到有更好的解决方案。

= form_for(@scope, @post) do |f|
  =f.simple_fields_for :posts do |ff|
    =ff.input :comment
于 2012-04-23T09:08:08.020 回答
0

安装 Gem 后重启服务器了吗?

于 2012-04-23T11:36:36.343 回答