#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Я провел некоторое исследование и не смог найти подходящего ответа, поэтому я обращаюсь к вам…..
Использование Rails 3.1 и попытка создать сообщение для пользователя. Когда я иду, чтобы создать тестовое сообщение, я получаю сообщение об ошибке:
Missing template events/create, application/create with {:locale=>[:en, :en],
:formats=>[:html], :handlers=>[:coffee, :erb, :builder]}
Это шаблон или я должен настроить свои маршруты?
Заранее спасибо за любую помощь.
Ответ №1:
Из предоставленного вами здесь журнала вы должны отправлять в метод create контроллера событий.
Следующее скопировано из вашего репозитория:
def create
@event = current_user.events.build(params[:event])
if @event.save
flash[:success] = "Event Shared"
redirect_to root_path
#else
# render 'pages/about'
end
#@event = Event.new what I had before
#@title = "Create An Event"
end
Таким @event.save
образом, в случае сбоя перенаправление не выполняется, а рендеринг закомментирован. Таким образом, по умолчанию rails 3.1 попытается найти файл представления в следующем порядке: события / создание, приложение / создание (это соответствует вашему журналу)
При сбое event.save вы, скорее render "new"
всего, будете использовать events/new.html.erb для файла просмотра. (конечно, это не обязательно, вы можете отображать все, что хотите, или даже перенаправлять, если хотите)
(Надеюсь, что то, что я просматриваю в репозитории, не является измененным :))
Комментарии:
1. Спасибо, это имеет смысл! Иногда те, что прямо перед вами, труднее всего увидеть.
Ответ №2:
Вероятно, вам понадобится:
def create
@event = current_user.events.build(params[:event])
if @event.save
flash[:success] = "Event Shared"
redirect_to root_path
else
render :new
end
end
Он будет использовать сообщения об ошибках, которые у вас уже есть в представлении.