我如何在将user_id用作外键的表中获取用户名

时间:2019-05-24 08:09:34

标签: ruby-on-rails blogs

我正在使用Devise gem进行用户身份验证。用户ID在文章表中作为外键 如何在View_article.html.erb视图中通过User_id获取作者姓名 我可以在show_article.htmlerb

中访问user_id

我试图在文章控制器中创建自定义函数,但无法获得所需的输出

2 个答案:

答案 0 :(得分:0)

您的Article模型应如下所示:

class Article << ActiveRecord::Base
  belongs_to :user
  #....some more lines
end

您的用户模型应如下所示:

class User << ActiveRecord::Base
  has_many :articles
  #....some more lines
end

,而您的show.html.erb应该说:

  #....your rest of code
<%= @article.try(:user).try(:name) %>
  #....your rest of code

如果您的文章没有任何用户,这将跳过用户名。看来您的文章没有user_id或您没有正确定义关系。

答案 1 :(得分:0)

在某些情况下,您的某些文章可能没有任何用户。所以 你可以做

<%= @article&.user&.name %>在显示页面中

以及在索引页面

<% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= article&.user&.name%></td>
      <td><%= link_to 'Show', article_path(article) %></td>
      <td><%= link_to 'Edit', edit_article_path(article) %></td>
      <td><%= link_to 'Delete', article_path(article),
              method: :delete,
              data: { confirm: 'Are you sure you want to delete this article?' } %></td>
    </tr>
  <% end %>

但是请确保您拥有ruby 2.3.0或更高版本