【问题标题】:Iterate through several objects form_for rails遍历几个对象 form_for rails
【发布时间】:2015-05-18 19:40:48
【问题描述】:

执行摘要

  1. 目标:我正在创建一个可由 form_for 编辑的管理仪表板
  2. 我有一个 Post 模型,它有两个属性:主题和标题
  3. 我创建了一个管理控制器,它有一个索引操作
  4. 我收到一个错误,声称找不到未定义的方法 ActionView 的“主题”:FormBuilder:0x000000031e02c8>
  5. 显然我有一个“主题”项目!我现在正盯着它……咒骂。

亲爱的朋友们,

如你所见,我的 post.title 中有 post.subject;我遍历每个@posts.each,然后将每个单独的对象传递给一个表单!是什么让它声称我没有物品。这么奇怪?

型号:

class Post < ActiveRecord::Base
    attr_accessor :title, :subject

end

路线:

resources :admin_dashboards

admin_dashboards_controller.rb

class AdminDashboardsController < ApplicationController

  def index
    @posts = Post.all()
  end

查看:index.html.erb

<tr>
<% @posts.each do |post| %>
<%= form_for post do |single_post| %>
<td> <%= single_post.subject %> </td>
<td> <%= single_post.submit %> </td>
</tr>
<% end %>

<% end %>

方案.rb

  create_table "posts", force: true do |t|
    t.text     "title"
    t.text     "subject"
    t.text     "url"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

【问题讨论】:

  • 请出示您的Post模特,models/post.rb
  • 另外,在索引页的第 2 行,您应该使用 &lt;% 而不是 &lt;%=
  • 类发布 <:base attr_accessor :title :subject end>
  • 为了清楚起见将其发布在问题中
  • mssergeant 已回答您的问题。 form_for 产生 FormBuilder 而不是 Post

标签: ruby-on-rails ruby ruby-on-rails-3 form-for


【解决方案1】:

form_for 块的参数不是 post,它是一个 FormBuilder。试试这样的:

<tr>
  <% @posts.each do |post| %>
    <%= form_for post do |single_post| %>
      <td> <%= single_post.text_field :subject %> </td>
      <td> <%= single_post.submit %> </td>
    <% end %>
  <% end %>   
</tr>

【讨论】:

  • 如果您学到了一些东西,这些时间并没有浪费。你再也不会犯那个特定的错误了:)
  • 非常感谢您对我的帮助。我希望当我不那么可怕的时候,我可以把人情还给社区。我对这样一个愚蠢的错误感到失望。
猜你喜欢
  • 2015-07-10
  • 1970-01-01
  • 2011-10-19
  • 2016-01-12
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
相关资源
最近更新 更多