我想尝试在Rails控制台中使用表单助手,但我执行extend ActionView::Helpers::FormHelper
的简单方法不起作用。例如,随后调用form_for
会导致错误NoMethodError: undefined method 'dom_class' for main:Object
。使用include
会产生相同的结果。
是否有一种“简单”的方法可以让我从控制台调用表单助手?如果可能的话,我宁愿这样做而不依赖于控制器或视图文件。
答案 0 :(得分:5)
您需要使用include,而不是extend:
irb(main):007:0> include ActionView::Helpers::FormHelper
=> Object
irb(main):008:0> form_for
ArgumentError: wrong number of arguments (0 for 1)
答案 1 :(得分:4)
对于简单的视图助手,这很容易
> app.helper.link_to 'root', app.root_path
# <a href = ....> # as expected
然而,您的具体情况并不那么容易,因为form_for需要view_context
,然后控制器实例才能工作。
# Get a controller instance at first. Must do it.
# Without this step `app.controller` is nil
> app.get app.root_path
# Use an instance variable but not variable!
> @user = User.last
# Get the view
# Note you need to take the trouble to define url manually
# because console can only reach path through app instance
> app.controller.view_context.form_for(@user, url: app.user_path(@user)){|f| f.input :name}
# Job done