Создание пользовательского сообщения

#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
  

Он будет использовать сообщения об ошибках, которые у вас уже есть в представлении.