Rails:我如何只显示当前用户?

时间:2015-06-09 12:23:21

标签: ruby-on-rails

它是一个消息传递应用程序,但它只显示所有用户。如何显示当前用户?

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %>

      <div class="modal-body">
        <form>

    <div class="form-group">
        To: 

此代码通过显示用户名来工作,但是当它发送时......它不会被保存。

 <input type="text" class="form-control" id="recipient-name">

下面的代码是唯一有效的代码,但它显示了所有用户..

        <%= f.select(:recipients, User.all.collect {|p| [ p.name, p.id ] }, {}, { multiple: true , class: "chosen-select form-control" })%>
    </div>

这是代码的其余部分。

<div class="form-group">
  Subject:
    <%= f.text_field :subject, class: "form-control" %>
</div>
<div class="form-group">
  Message:
  <%= f.text_area :body, class: 'form-control', placeholder: "Type your message here", rows: 4  %>
</div>

完整代码:

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %>

      <div class="modal-body">
        <form>

    <div class="form-group">
        To: <input type="text" class="form-control" id="recipient-name">
        <%= f.select(:recipients, User.name {|p| [ p.name, p.id ] }, {}, { multiple: true , class: "chosen-select form-control" })%>
    </div>
    <div class="form-group">
      Subject:
        <%= f.text_field :subject, class: "form-control" %>
    </div>
    <div class="form-group">
      Message:
      <%= f.text_area :body, class: 'form-control', placeholder: "Type your message here", rows: 4  %>
    </div>

2 个答案:

答案 0 :(得分:0)

假设您知道当前用户的ID,只需更改:

<%= f.select(:recipients, User.all.collect {|p| [ p.name, p.id ] }, {}, { multiple: true , class: "chosen-select form-control" })%>

要:

<%= f.select(:recipients, User.where(id: current_users_id ).collect {|p| [ p.name, p.id ] }, {}, { multiple: true , class: "chosen-select form-control" })%>

不是返回每个用户的数组,而是对其进行操作,而只返回您关心的一个用户的数组。也就是说,通过更好地了解您的应用程序,我们肯定能找到更好的显示选项。

答案 1 :(得分:0)

这有效吗?:

<%= f.collection_select :recipients, User.all.where('name is not ?', nil), :id, :name,
  { prompt: "Choose User..." }  %>