Ruby Titleize Simple Form输入

时间:2017-10-13 15:53:23

标签: ruby simple-form

我的用户通过简单的形式作为参数提供他的大学信息,并将其发送到服务器。

<div class="col-xs-12 col-s-4 col-sm-4">
  <%= simple_fields_for :users do |r| %>
    <%= r.input :university, required: false, placeholder: "University", label: false %>
  <% end %>
</div>

如何标题用户提供给我的参数输入?

我试过

<%= r.input :university.titleize, required: false, placeholder: "University", label: false %>

但它不起作用。

3 个答案:

答案 0 :(得分:1)

输入上的第一个参数接收要为其生成输入的用户属性,因此,它不是链接titleize方法的位置。

您可以做的是在保存记录之前修改发送的值,或者您可能执行的任何操作。例如,如果您要将数据发送到create方法,则可以在创建用户后将其修改,并将其保存到数据库中,如:

def create
  @user = User.new(user_params)
  @user.university = @user.university.titleize
  ...

答案 1 :(得分:1)

如果您在用户输入文本后尝试标题化客户端上的文本,则需要编写一个javascript处理程序来操作某些事件触发器上的DOM(可能是模糊?)。

另一方面,如果您在将文本存储到数据库之前尝试标题化文本,则需要在服务器上执行此操作。将用户输入的文本转换为titelized版本,然后将其分配给您正在更新的记录。

答案 2 :(得分:0)

您也可以在控制器中尝试这种方式:

user_params[:university] = user_params[:university].titleize
@user = User.create!(user_params)