如何为不同类型的对象渲染不同的部分属于控制器中的其他对象



我构建的应用程序允许用户创建问题类型:true/false,单一和多项选择。因此,我创建了一些模型:

class QuestionType < ActiveRecord::Base
  attr_accessible :name, :shorcut
end
class Question < ActiveRecord::Base
  attr_accessible :content, :mark, :topic_id, :question_type_id, :answers_attributes
  belongs_to :topic
  belongs_to :user
  belongs_to :question_type
  has_many :answers, dependent: :destroy
  accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
  attr_accessible :content, :question_id, :correct
  belongs_to :question
end

现在,我要构建一个问题的索引页,有3个链接以添加3种问题类型的问题,当用户单击链接时,他们将转到页面以创建问题,并且页面将具有适当的形式。问题。在问题控制器中,我想存储问题类型ID来保存提问。
我认为这样的地址:

http://example.com/questions/index:索引页面将有3个链接来创建问题。

http://example.com/question_types/1/questions/new:将为true/false问题提供部分形式

http://example.com/question_types/2/questions/new:将为单个选择问题提供部分形式

http://example.com/question_types/1/questions/new:将为多项选择问题提供部分形式

我认为我必须将嵌套的资源放在问题类型和问题模型的路线中以具有上述链接类型,但是我不知道如何构建视图和类似于上面的视图。请帮助我或给我一个想法,更好的方法:(

通过我对您的问题的理解,这可能会解决您的问题:

在您的应用程序/浏览/问题/new.html.erb中,您可以这样做:


    case params[:question_type_id]
    when 1
    render :partial=>"/questions/new_true_false_question"
    when 2
    render :partial=>"/questions/new_single"
    when 3
    render :partial=>"/questions/new_multi"
    end

,然后创建所引用的三个部分或以您喜欢的任何名称。

您可以通过Chaning Render在控制器中进行:渲染部分:模板。

:)

最新更新