ruby-on-rails – 在一个页面上列出并创建rails 3
我想创建一个仪表板页面,顶部是一个创建操作(表单),下面是一个列表操作…(显示所有已经提出的问题)我想知道最好的方法是什么.
我有一个带有列表和创建操作的QuestionsController.所以我需要制作一个带有创建列表动作的DashboardController ……?然后渲染来自QuestionController的两个模板……? 或者我是否需要制作一个带有列表的DashboardController并在它们上创建操作,引用问题模型? 最好的祝福, 解决方法
您应该创建QuestionsController,并在索引视图中包含表单部分.这个表单应该只是遵循创建操作,这个操作应该是错误的(记住可能存在验证错误)渲染索引操作,并且在成功之后它应该重定向回索引.
除非你还需要从其他地方创建问题,否则它会更复杂. 更新: 您也可以创建DashboardsController,但我只会用它来显示仪表板(显示动作和单一资源,而不是routes.rb中的资源),然后通常按照新的问题形式到QuestoinsController #create,然后重定向回DashboardsController #show.这样,如果您还在仪表板上显示多个资源类型,则会更加RESTful,因为您显示单个仪表板(带有问题和其他资源),但您可以按照QuestionsController #create创建问题. 更新2: 如果您(或任何其他人需要)在一个地方制作它: >在您的routes.rb文件中定义资源: resources :questions >在你的QuestionController中: class QuestionsController < ApplicationController def index setup_questions end def create @question = Question.new(params[:question]) if @question.save redirect questions_path,:notice => "Successfully created question." else setup_questions render :action => :index end end private def setup_questions @questions = Question.order(:name).page(params[:page]) # or any other method to fetch all your questions @question ||= Question.new end end >在您的app / views / questions / index.html.erb视图中: <% @questions.each do |question| %> <%# display question as table row %> <% end %> <% render :template => "form",:locals => {:question => @question} %> >在app / views / questions / _form.html.erb中,您只需为新问题定义标准表单: <%= form_for question do |f| %> <%# form fields %> <% end %> 然后,您不需要查看新操作,因为此操作只显示新问题的表单,并且您在索引操作中具有此表单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |