He intentado crear y editar un objeto utilizando una vista modal en el html de índice en Rails. Estoy usando Twitter bootstrap en el proyecto. Tengo mucho éxito al crear el objeto usando el modal. Para que las cosas funcionen, tuve que crear un objeto llamado @post = Post.new en mi acción de índice.Crear y editar objetos usando modal en rieles
Desde antes de que se muestre el modal de edición, el objeto de edición debe estar listo como @post = Post.find (params [: id]), pero ocurre en la acción de edición.
¿Es su manera de utilizar inicializar @post para mi vista modal de edición antes de que se muestre?
Aquí está mi código:
index.html.erb
<div class="page-header">
<h1>Posts</h1>
</div>
<% @posts do |post| %>
<tr>
<td><%= post.name %></td>
<td><%= post.description %></td>
<td><%= link_to 'Edit', edit_post_path(post), :class => 'btn btn-mini btn-min-standard-width', :data => {:toggle => "modal", :target => "#editItemModal"} , :remote => true %>
<%= link_to 'Destroy', post, confirm: 'Are you sure?', method: :delete, :class => 'btn btn-mini btn-danger btn-min-standard-width' %></td>
</tr>
<% end %>
<%= link_to 'New Item', new_post_path,
:class => 'btn btn-primary btn-standard-width' , :data => {:toggle => "modal", :target => "#newItemModal"} , :remote => true %>
<div id="newItemModal" class="modal hide fade" >
<button type="button" class="close" data-dismiss="modal">×</button></h1>
<div class="page-header">
<h1>New item </h1>
</div>
<%= render :partial => 'form' %>
</div>
<div id="editItemModal" class="modal hide fade" >
<button type="button" class="close" data-dismiss="modal">×</button></h1>
<div class="page-header">
<h1>Edit item </h1>
</div>
<%= render :partial => 'form' %>
</div>
_form.html.erb
<%if @post%>
<%= form_for(@post, :html => { :class => 'form-horizontal', :remote => true }) do |f| %>
<div class="control-group">
<%= f.label :name, :class => 'control-label' %>
<div class="controls">
<%= f.text_field :name %>
</div>
</div>
<div class="control-group">
<%= f.label :description, :class => 'control-label' %>
<div class="controls">
<%= f.text_area :description %>
</div>
</div>
<div class="form-actions">
<%= f.submit nil, :class => 'btn btn-primary' %>
</div>
<% end %>
<% end %>
PostController
class PostsController < ApplicationController
def index
@post = Post.new
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @post }
end
end
def new
@post = Post.new
end
def edit
@post = Post.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @post }
end
end
...... ......
Puede obtener más respuestas útiles mediante la publicación de bits del código –
Pregunta actualizada con fragmentos de código – random
@random ¿Lo resolvió? –