我要添加一个站点范围的表单,用于在rails站点上提问。资源问题的模型/视图/控制器已经创建。执行question/new会显示您所期望的表单。现在我想显示一个站点范围的问题表单(与此表单的唯一区别是它只显示必填字段)。问题:我应该在application_controller中创建一个新的问题对象并将其传递给rails form_for助手,还是应该创建一个新的_form2部分(在问题视图中)并将其包含在我的站点范围内的模板中?
谢谢。
在views/shared
文件夹中创建question_form
部分,并从站点范围模板中引用。
编辑:在回复从哪里获得@question变量
在我看来你有两个选择,你可以在ApplicationController中加载变量:
class ApplicationController < ActionController::Base
before_filter :load_question
def load_question
@question = Question.new
end
...
end
(在这种情况下,您应该注意与@question变量的冲突)
或者更好,你可以在ApplicationHelper中创建一个方法:
module ApplicationHelper
def question_form
question = Question.new
raw render 'shared/question_form', :question => question
end
...
end
然后在视图中,不是引用局部,而是引用helper:
<%= question_form %>
在这种情况下,您需要将部分中的变量引用为局部变量,因此question
而不是@question
。
希望对你有帮助。