Representación parcial de un controlador en Rails.

Tengo un formulario que agrega filas a la base de datos a través de remote => true. Luego quiero agregar los nuevos datos a una tabla, pero no puedo obtener la vista correcta para representar.

A partir de ahora, está representando la página show.html.erb completa para la nueva entrada, pero quiero diseñar una versión mínima para agregar como un. ¿Hay una manera rápida de decirle a mi controlador qué vista se debe mostrar después de insertarla en la base de datos? Quiero renderizar mi nombre parcial _newly_added.html.erb

Mi controlador

def new @task = Task.new render :partial => "/tasks/newly_added", :locals => { :t => @task } end 

¡¡Gracias!!

EDITAR Creo que lo que necesito es solo una vista alternativa de “show”.

Descubrí que el método que necesitaba cambiar era en realidad este:

  def create @task = Task.new(params[:task]) respond_to do |format| if @task.save format.html { redirect_to @task, notice: 'Task was successfully created.' } format.json { render json: @task, status: :created, location: @task } else format.html { render action: "new" } format.json { render json: @task.errors, status: :unprocessable_entity } end end end 

Solo necesito hacer una vista de presentación alternativa y luego indicar esto para redirigir a esa vista.

Editado por los cambios en su pregunta. Sin embargo, nada realmente cambia. Estás pensando en las cosas mal y necesitas ajustar cómo estás pensando. No necesita un progtwig alternativo, necesita manejar la solicitud format.js.

El parcial debe representarse dentro de una respuesta de JavaScript, no el controlador. El controlador se parece más a esto:

  def create @task = Task.new(params[:task]) respond_to do |format| if @task.save format.html { redirect_to @task, notice: 'Task was successfully created.' } format.json { render json: @task, status: :created, location: @task } format.js else format.html { render action: "new" } format.json { render json: @task.errors, status: :unprocessable_entity } format.js end end end 

Luego, en vistas / tareas / create.js.coffee

 ($ '#mytable').append("<%= j render(partial: 'tasks/newly_added', locals: { t: @task }) %>") 

Lo que sucede aquí es que el navegador realiza una llamada a create.js . El controlador responde con la plantilla create.js , debido al respond_to bloque format.js . La j escapa del contenido del archivo _newly_added.html.erb , y su contenido se anexa a la tabla. El controlador no interactúa con la vista existente, en su lugar, JavaScript se envía al navegador e interactúa con la vista.

Todo esto cambia un poco si estás usando un marco MVC del lado del cliente como Backbone o Ember, pero no lo especificaste, así que asumo que vas con raíles de acciones.