自动提供简单形式的信息

时间:2013-06-03 19:50:30

标签: ruby-on-rails simple-form form-for

我正在开发一个简单的小型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 %>

它不喜欢这个并说“无法将符号转换为整数” 如何使用登录用户的全名提供,而无需选择其他用户?

2 个答案:

答案 0 :(得分:0)

您对表单的第一个输入被指定为:user_id的输入,这是用户表中的整数。使用全名会导致数据类型不匹配。这有帮助吗?

现在您希望显示用户名而用户无法更改显示的内容,是否真的需要将此作为输入?你能用普通的<div></div>显示用户名,可以这么说吗?

答案 1 :(得分:0)

user_idUser的forreign键,它包含current_user.id而不是它的名字。

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

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

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

def new
  @status = Status.new(user: current_user)
  ...
end