Визуализировать альтернативный вид в ruby on rails

#ruby-on-rails-3 #view #render

#ruby-on-rails-3 #Вид #отрисовка

Вопрос:

У меня есть следующий код в моем контроллере

   def create
    @severity = Severity.new(params[:severity])
    if @severity.save
      flash[:notice] = "Successfully created severity"
      render 'save'
    end
  end
  

Я пытаюсь получить метод для визуализации другого файла представления, отличного от create.js.erb, однако контроллер всегда отображает значение по умолчанию, а не save.js.erb.

Есть идеи о том, что может быть не так?

Ответ №1:

 def create
  @severity = Severity.new(params[:severity])
  if @severity.save
    flash[:notice] = "Successfully created severity"
    respond_to do |format|
      format.js { render :template => "/path/to/save" }
    end
  end
end
  

или

 def create
  @severity = Severity.new(params[:severity])
  if @severity.save
    flash[:notice] = "Successfully created severity"
    respond_to do |format|
      format.js { render :file => "/path/to/save.js.erb" }
    end
  end
end
  

попробуйте это

 def create
  @severity = Severity.new(params[:severity])
  if @severity.save
    flash[:notice] = "Successfully created severity"
  end
  render :file => "/path/to/save.js.erb"
end
  

Комментарии:

1. это не сработало, я добавил версию кода шаблона отрисовки, указывающую на серьезность / сохранить, и он по-прежнему отображал файл create.js.erb по умолчанию. Нужно ли указывать полный путь?

2. как вы вызываете это действие? через ajax?

3. Да, у меня есть form_for с атрибутом:remote => true

4. По-прежнему безуспешно, несмотря на то, какой метод я использую, чтобы попытаться отобразить другое представление, по умолчанию всегда используется рендеринг create.js.erb

5. и если вы попробуете это: render :text => "Hello world!" если он не вернется hello world , тогда ваша проблема не в том, что вы думаете