循环 Form_for rails
loop through a Form_for rails
我有 "rails generated scaffold Post",我正在尝试将 posts.each 索引转换为 form_for,这样我就可以使用 "remote: true" 和 AJAX.
问题:我的代码没有显示我的记录。它只显示 table 线程标题。
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
^^^ 所以我只对控制器进行了这些更改,下面的代码无法显示 post 记录
<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 %>
你应该渲染你的 form_for 行,仅仅渲染字段是不够的。
尝试使用:
<%= form_for(mend) do |f| %>
而不是:
<% form_for(mend) do |f| %>
我觉得你在这个过程中的某个地方有点困惑。
您不需要使用 form_for 来执行 AJAX 请求,而且您在实现它的方式中有很多错误。
如果我正确理解了您的要求,那么您尝试做的似乎只是在 table 中显示帖子,并带有指向每个条目的显示、编辑、销毁操作的链接。您希望作为 AJAX 请求调用的那些链接。
入门指南:
将索引操作更改为:
def index
@posts = Post.all
end
tbody 声明应该变成:
<tbody>
<%= render @posts %>
</tbody>
创建一个 _post.html.erb
部分,负责渲染 table:
的每一行
<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>
我有 "rails generated scaffold Post",我正在尝试将 posts.each 索引转换为 form_for,这样我就可以使用 "remote: true" 和 AJAX.
问题:我的代码没有显示我的记录。它只显示 table 线程标题。
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
^^^ 所以我只对控制器进行了这些更改,下面的代码无法显示 post 记录
<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 %>
你应该渲染你的 form_for 行,仅仅渲染字段是不够的。
尝试使用:
<%= form_for(mend) do |f| %>
而不是:
<% form_for(mend) do |f| %>
我觉得你在这个过程中的某个地方有点困惑。
您不需要使用 form_for 来执行 AJAX 请求,而且您在实现它的方式中有很多错误。
如果我正确理解了您的要求,那么您尝试做的似乎只是在 table 中显示帖子,并带有指向每个条目的显示、编辑、销毁操作的链接。您希望作为 AJAX 请求调用的那些链接。
入门指南:
将索引操作更改为:
def index @posts = Post.all end
tbody 声明应该变成:
<tbody> <%= render @posts %> </tbody>
创建一个
的每一行_post.html.erb
部分,负责渲染 table:<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>