Ruby on rails 以简单的形式自动提供信息

Ruby on rails 以简单的形式自动提供信息,ruby-on-rails,simple-form,form-for,Ruby On Rails,Simple Form,Form For,我正在开发一个简单的小Rails社交网络,现在我正在尝试在创建新的状态更新时自动填写当前登录用户的姓名。我的原始代码让他们从下拉列表中选择用户名,这很愚蠢——当你进入Facebook时,你填写这个框,它就会自动知道它属于你。这是我的原始代码: <%= simple_form_for(@status, html: {:class => "form-horizontal"}) do |f| %> <% if @status.errors.any? %> &l

我正在开发一个简单的小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 %>
“水平形式”})do | f |%>
禁止保存此状态:
以下是我试图用以下内容取代它:

<%= 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 %>
“水平形式”})do | f |%>
禁止保存此状态:
它不喜欢这样,说“不能将符号转换为整数”
如何提供登录用户的全名而不给他们选择其他用户的选项?

表单的第一次输入被指定为用户表中的整数
:user\u id
的输入。在那里输入全名会造成数据类型不匹配。这有用吗


现在,您希望在用户无法更改显示内容的情况下显示用户名,是否真的需要将其作为输入?可以这么说,你能在一个普通的
中显示用户名吗?

user\u id
user
的forreage键,它保存的是类似于
当前用户.id
的内容,而不是它的名称

用户似乎已经登录,因此您只需显示名称并向
create
操作提供id:

<%= f.input :user_id, as: :hidden %>
<%= current_user.name %> <%# just for information %>
def new
  @status = Status.new(user: current_user)
  ...
end