2017-10-13 119 views
1

我的用户通过简单的表单将他的大学信息作为参数发送给服务器。Ruby标题简单表格输入

<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 %> 

,但它不工作。

回答

1

输入的第一个参数接收用于生成输入的用户属性,因此,它不是链接方法的地方。

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

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

哦,好,我不知道。我明白了,所以我真的必须在服务器端改变它。我会尝试一下。 –

+0

是的,你可以在你想要做什么的问题上添加更多信息,但仍不清楚。 –

1

如果你想titleize文本在用户键入它之后在客户端上,你将需要编写一个JavaScript处理程序来处理某些事件触发器上的DOM(可能模糊?)。另一方面,如果在将文本存储到数据库之前尝试标记文本,则需要在服务器上执行该操作。在将用户输入的文本分配给正在更新的记录之前,将其转换为标题版本。

0

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

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