如何将用户模型中的用户名显示到报价控制器的索引视图中?

How to show username from User model to the index view of Quote controller?

当我创建报价时,它要求提供报价正文、作者和用户 ID、用户和报价相关联,但我想显示用户的用户名和创建报价时有人输入的用户 ID。因此,如果用户的用户名是 "shanks" 并且他的 ID 是 4,并且当用户创建报价并在 user_id 的文本字段中输入 4... 我想在报价控制器的索引视图中显示具有该 ID 的用户的用户名。

def index
    @quote = Quote.new
    @quotes = Quote.order(created_at: :desc).all
    @user = User.new
end

查看:

<!-- form to add a Quote -->
<div class="create-quote">
<%= form_for @quote do |f| %>
<%= f.label :quotetext %><br>
<%= f.text_field :quotetext %><br>

<%= f.label :author %><br>
<%= f.text_field :author %><br>

<%= f.label :user_id %><br>
<%= f.text_field :user_id %><br>
<%= f.submit "Add quote" %>
<% end %>
</div>
<!-- All quotes here -->
<% @quotes.each do |quote| %>
<blockquote>
    <p>
        <%= quote.quotetext %>
    </p>
    <footer>
        <cite> 
            <%= quote.author %><br>
        </cite>
        <p>Posted by: <%= @user.username %> </p> <!-- this -->
    <%= link_to "Delete quote", quote_path(quote), method: :delete, data: { confirm: "Are you sure you want to delete this beautiful quote?"}     %>
    </footer>
</blockquote>
<%= quote.like %></br>
<% end %>

用户模型:

class User < ActiveRecord::Base
has_many :quotes
validates :username ,presence: true
validates :password ,presence: true
end

引用模型:

class Quote < ActiveRecord::Base
belongs_to :user
validates :quotetext, presence: true,
    length: { minimum: 5}
validates :author, presence: true
end

你的报价与用户相关联,所以当你这样做时它会给你用户对象

    quote.user

现在,当您执行 quote.user.username 时,它会为与引用关联的用户提供用户名。

使用这个

    <p>Posted by: <%= quote.user.try(:username) %> </p>