我正在添加一个站点范围的表单,用于在 Rails 站点上提问。资源问题的模型/视图/控制器已经创建。Going to question/new 会按照您的预期显示表单。现在我想显示一个站点范围的问题表单(与这个唯一的区别是它只显示必填字段)。问题:我应该在 application_controller 中创建一个新的问题对象并将其传递给 rails form_for助手,还是应该创建一个新的_form2部分(在问题视图中)并将其包含在我的站点范围模板中?
谢谢你。
我正在添加一个站点范围的表单,用于在 Rails 站点上提问。资源问题的模型/视图/控制器已经创建。Going to question/new 会按照您的预期显示表单。现在我想显示一个站点范围的问题表单(与这个唯一的区别是它只显示必填字段)。问题:我应该在 application_controller 中创建一个新的问题对象并将其传递给 rails form_for助手,还是应该创建一个新的_form2部分(在问题视图中)并将其包含在我的站点范围模板中?
谢谢你。
在文件夹中创建一个question_form
部分views/shared
,并从站点范围的模板中引用它。
编辑:回复从哪里获取@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
然后在您看来,不是引用部分,而是引用助手:
<%= question_form %>
在这种情况下,您需要将局部变量中的变量引用为局部变量,question
而不是@question
.
希望有帮助。