0

我正在开发一个简单的小型 Rails 社交网络,现在我正在尝试在创建新状态更新时自动填写当前登录用户的名称。我的原始代码让他们从一个愚蠢的下拉列表中选择他们的用户名——当你去 Facebook 时,你填写了这个框,它会自动知道它属于你。这是我的原始代码:

<%= simple_form_for(@status, html: {:class => "form-horizontal"}) do |f| %>
  <% if @status.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@status.errors.count, "error") %> prohibited this status from being saved:</h2>

      <ul>
      <% @status.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <%= f.input :user_id, collection: User.all, label_method: :full_name %>
  <%= f.input :content %>
  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

这是我试图用以下内容替换它:

<%= simple_form_for(@status, html: {:class => "form-horizontal"}) do |f| %>
  <% if @status.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@status.errors.count, "error") %> prohibited this status from being saved:</h2>

      <ul>
      <% @status.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <%= f.input :user_id, current_user.full_name %>
  <%= f.input :content %>
  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

它不喜欢这样,并说“无法将符号转换为整数”我如何在不给他们选择另一个用户的选项的情况下为其提供登录用户的全名?

4

2 回答 2

0

表单的第一个输入被指定为:user_id用户表中的整数的输入。将全名放在那里会导致数据类型不匹配。这有帮助吗?

既然您希望在用户无法更改显示内容的情况下显示用户名,那么真的需要将其作为输入吗?可以这么说,您可以只显示用户名<div></div>吗?

于 2013-06-03T20:07:46.167 回答
0

user_id是 的外键User,它拥有类似于current_user.id不是它的名字的东西。

看起来,用户已经登录了,所以您只需要显示名称并为create操作提供 id:

<%= f.input :user_id, as: :hidden %>
<%= current_user.name %> <%# just for information %>

并将其设置在@status控制器中的 new 中:

def new
  @status = Status.new(user: current_user)
  ...
end
于 2013-06-03T20:14:20.790 回答