加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在一个页面上列出并创建rails 3

发布时间:2020-12-17 02:29:37 所属栏目:百科 来源:网络整理
导读:我想创建一个仪表板页面,顶部是一个创建操作(表单),下面是一个列表操作…(显示所有已经提出的问题)我想知道最好的方法是什么. 我有一个带有列表和创建操作的QuestionsController.所以我需要制作一个带有创建列表动作的DashboardController ……?然后渲染来
我想创建一个仪表板页面,顶部是一个创建操作(表单),下面是一个列表操作…(显示所有已经提出的问题)我想知道最好的方法是什么.

我有一个带有列表和创建操作的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 %>

然后,您不需要查看新操作,因为此操作只显示新问题的表单,并且您在索引操作中具有此表单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读