2017-10-13 14 views
1

私のユーザは、シンプルフォームを使って大学情報をパラメータとしてサーバに送信します。Ruby Titleizeシンプルフォーム入力

<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

入力の最初のパラメータは、入力を生成するユーザー属性を受け取ります。したがって、titleizeメソッドをチェーンする場所ではありません。

あなたができることは、送信した値、レコードを保存する前、または実行する可能性がある操作を変更することです。あなたがテキストをtitleizeしようとしている場合

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

ああ[OK]を、私はそれを知りませんでした。私は見るので、私は実際にサーバー側でそれを変更する必要があります。やってみます。 –

+0

はい、何をしようとしているのかという質問にさらに情報を追加することはできますが、依然として明確ではありません。 –

1

:作成メソッドにデータを送信している場合の例として、あなたは次のように、ユーザーを作成し、データベースにそれを保存した後、それを変更することができますユーザーがそれを入力した後のクライアントでは、いくつかのイベントトリガーでDOMを操作するためのJavaScriptハンドラを作成する必要があります(おそらくぼかし?)。

一方、テキストをデータベースに保存する前にテキストのタイトルをつけようとしている場合は、そのテキストをサーバー上で作成することをお勧めします。更新しているレコードを割り当てる前に、ユーザー入力のテキストをタイタライズ版に変換します。

0

また、あなたのコントローラでは、この方法を試すことができます。

user_params[:university] = user_params[:university].titleize 
@user = User.create!(user_params) 
関連する問題