Вы должны создать QuestionsController, с частичной формой, включенной в представление индекса. Эта форма должна просто следовать за созданием действия, и это действие должно при ошибке (помните, что могут быть ошибки проверки) отображать действие индекса, а после успеха оно должно перенаправляться обратно на индекс.
Если вам не нужно создавать вопросы из других мест, тогда все сложнее.
UPDATE
Вы также можете создать DashboardsController, но я бы использовал его только для отображения панели мониторинга (показывать действие и единичный ресурс, а не ресурсы в rout.rb), а затем обычно следовать новой форме вопроса в QuestoinsController # create и перенаправлять обратно на DashboardsController. #шоу. Таким образом, RESTful более удобно, если вы также показываете несколько типов ресурсов на панели мониторинга, потому что вы показываете отдельную панель управления (с вопросами и другими ресурсами), но вы следуете пункту QuestionsController # create, чтобы создать Question.
ОБНОВЛЕНИЕ 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 %>
Тогда вам не нужно представление для действия new
, так как это действие будет просто отображать форму для нового вопроса, и у вас есть эта форма в действии index
.