循环通过Form_for rails

时间:2016-10-28 17:45:29

标签: ruby-on-rails ajax foreach form-for

我有“rails generated scaffold Post”并且我试图将posts.each索引转换为form_for所以我可以使用“remote:true”AJAX。

问题:我的代码没有显示我的记录。它只显示表格线程标题。

    class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all
    @post = Post.new
  end

  # GET /posts/1
  # GET /posts/1.json
  def show
  end

  # GET /posts/new
  def new
    @post = Post.new
  end

  # GET /posts/1/edit
  def edit
  end

^^^所以我只对控制器进行了这些更改,以下代码无法显示帖子记录

<tbody>
<% @posts.each do |mend| %>
<% form_for(mend) do |f| %>
  <tr>
    <td><%= f.text_field :title %></td>
    <td><%= f.text_field :content %></td>
    <td><%= f.text_field :verify %></td>
    <td><%= f.text_field :date %></td>
    <td><%= f.text_field :rate %></td>
    <td><%= link_to 'Show', post_path(f) %></td>
    <td><%= link_to 'Edit', edit_post_path(f) %></td>
    <td><%= link_to 'Destroy', @post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
<% end %>

2 个答案:

答案 0 :(得分:0)

你应该渲染form_for行,仅仅渲染字段还不够。

尝试使用:

<%= form_for(mend) do |f| %>

而不是:

<% form_for(mend) do |f| %>

答案 1 :(得分:0)

我认为你在某个地方有点困惑。

您不需要使用form_for来执行AJAX请求,并且您实施它的方式仍然存在很多错误。

如果我正确理解了您的要求,那么您尝试做的只是在表格中显示帖子,其中包含指向每个条目的show,edit,destroy操作的链接。您想要作为AJAX请求调用的那些链接。

为了帮助您入门:

  1. 将索引操作更改为:

    def index @posts = Post.all end

  2. tbody声明应该成为:

    <tbody> <%= render @posts %> </tbody>

  3. 创建一个_post.html.erb部分,负责渲染表格的每一行:

    <tr> <td><%= @post.title %></td> <td><%= @post.content %></td> <td><%= @post.verify %></td> <td><%= @post.date %></td> <td><%= @post.rate %></td> <td><%= link_to 'Show', post_path(@post), remote: true %></td> <td><%= link_to 'Edit', edit_post_path(@post), remote: true %></td> <td><%= link_to 'Destroy', @post, method: :delete, data: { confirm: 'Are you sure?' }, remote: true %></td> </tr>