我正在添加一个网站范围的表单,用于在rails网站上提问。已创建资源问题的模型/视图/控制器。回答问题/新问题会显示您期望的表格。现在我想显示一个站点范围的问题表单(唯一的区别是它只显示必填字段)。问题:我应该在application_controller中创建一个新的问题对象并将其传递给rails form_for 帮助器,还是应该创建一个新的 _form2 部分(在问题视图中)并且只是在我的网站范围的模板中包含它?
谢谢。
答案 0 :(得分:1)
在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
然后在您的视图中,您不是引用partial,而是引用帮助程序:
<%= question_form %>
在这种情况下,您需要将partial中的变量引用为局部变量,因此question
而不是@question
。
希望有所帮助。