2012-07-23 61 views
5

我一直在尝试使用Rails中索引html中的模态视图创建和编辑对象。我在项目中使用twitter bootstrap。我很成功地使用模态创建对象。 对于工作,我必须在我的索引操作中创建一个名为@post = Post.new的对象。在rails中使用模态创建和编辑对象

由于在显示编辑模式之前,编辑对象必须准备就绪@post = Post.find(params [:id]),但它发生在编辑操作中。

他们的方式使用我可以初始化@post我的编辑模态视图显示之前?

这里是我的代码:

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 

...... ......

+0

您可以通过发布代码获得更多有用的答案 – 2012-07-23 05:40:04

+0

已更新的问题与代码片段 – random 2012-07-23 05:53:51

+0

@random你知道吗? – 2013-10-21 02:11:25

回答

0

只要我明白你想在编辑模式视图中使用实例变量@post。

不知道你的代码库,我能说什么:

  1. 查找呈现在编辑模式视图控制器相应的动作,创建一个如果没有
  2. 初始化@post与模型发表ID发现,只是简单地认为复制并粘贴到适当的行动
  3. 视图范围

希望这回答你的问题中调用它

+0

由于模态显示在索引html中,我认为应该在索引操作中定义@post。但是当我点击新的或编辑按钮时,相应的动作被调用。 – random 2012-07-23 05:56:46

+0

在您的索引视图中渲染'<%= render:partial =>'form'%>',您希望在其中创建对象。 – 2012-07-23 06:07:27

+0

它没有帮助。任何其他建议? – random 2012-07-23 06:34:02

相关问题