我有一个表单,定义如下:
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
但是,我收到“没有给出 block ”错误。有人可以指出 - 为什么以及如何解决它吗?也许我可以使用其他方法?
不要问我为什么需要它。只是为了尽可能保持干燥。表单应该是可重用的,你知道:D
最佳答案
您需要将该 block 传递给my_form
。实现此目的的方法是在您希望 block 移动的位置包含一个 yield
:
def my_form
if some_condition
form_for(@model) { |f| yield f }
else
form_for [@model, @nested_model] { |f| yield f }
end
end
这应该采用您在 View 中传递的 block :
my_form do |f|
# Really a lot happens here
end
关于ruby-on-rails - Rails form_for 条件参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594608/