0

这是微博视图的相关部分。.

<li>
  <span class="content"><%= micropost.content %></span>
  <span class="product"><%= micropost.product %></span>
  <span class="price"><%= micropost.price %></span>
  <span class="location"><%= micropost.location %></span>
  <span class="timestamp">
    Posted <%= time_ago_in_words(micropost.created_at) %> ago.
  </span>
  <% if current_user?(micropost.user) %>
    <%= link_to "delete", micropost, method:  :delete,
                                     confirm: "You sure?",
                                     title:   micropost.content %>
  <% end %>

我最近在 micropost 表的列中添加了产品、价格和位置。我检查了数据库,这些方面正在被记录/写入,但由于某种原因,内容是唯一显示在应用程序上的内容。为什么其他人被排除在外?

这是生成的 HTML。我假设这是相关部分。如您所见,产品、价格和位置的 html 永远不会生成。

   <li id="1">
  <a href="/users/1"><img alt="alex" class="gravatar" src="http://gravatar.com/avatar/a6759dcef8e5aad4e77509e5479b9823.png?s=50" /></a>
  <span class="user">
    <a href="/users/1">alex</a>
  </span>
  <span class="content">first</span>
  <span class="timestamp">
    Posted less than a minute ago.
  </span>
    <a href="/microposts/1" data-confirm="You sure?" data-method="delete" rel="nofollow" title="first">delete</a>
</li>

我不认为这是 attr_accessor 和 attr_accessible 之间的区别,因为内容是 attr_accessor 并且它会显示出来。另外,我读到了差异,这里似乎不相关。我相信 attr_accessible 是正确的。另外,我尝试将其更改为 attr_accessor 并没有用。还有其他想法吗?谢谢,麻烦您了!

4

2 回答 2

1

您尝试查看的微博 (ID = 1) 是否在这些字段 (:product, :price, :location) 上填充了数据?

于 2012-08-13T09:04:48.963 回答
0

由于生成的 HTML 甚至没有span这些字段的标签,问题似乎是 Rails 没有加载您的视图文件的最新版本。您是在生产中还是在开发中运行?您是否重新启动了 Rails 服务器?

此外,您是正确的,attr_accessible而不是attr_accessor那些是数据库列。

您还可以检查是否启用了任何类型的缓存,以显示生成的 HTML 的缓存副本。例如,您可以更改content数据库中的值并查看是否反映在生成的 HTML 中。

于 2012-08-13T23:05:43.737 回答