【发布时间】:2013-09-06 19:48:29
【问题描述】:
我有一个表单,定义如下:
form_for(@model) do |f|
# Really a lot happens here
end
我想知道是否有任何方法可以调整第一行:form_for(@model)
首先我认为我可以使用辅助函数:
def my_form
if some_condition
form_for(@model)
else
form_for [@model, @nested_model]
end
end
然后将其嵌入到我的表单调用中。像这样:
my_form do |f|
# Really a lot happens here
end
但是,我收到“No block given”错误。有人可以指出 - 为什么以及如何解决它?也许我可以使用任何其他方法?
不要问我为什么需要它。只是为了让事情尽可能干燥。表单应该是可重用的,你知道 :D
【问题讨论】:
-
你能更清楚一点
some_condition是什么意思吗?它是否在某处访问一些全局信息(您没有将其作为参数传递)?您收到一个错误,因为您的my_form帮助程序未设计为接受块参数。 -
@mbratch 在这里将“some_condition”视为视图中的实例变量。或者一个变量,传递给这个辅助方法。真的没关系。重要的是 - 我希望能够在我拥有的“form_for”之间切换
标签: ruby-on-rails ruby forms conditional form-for