28151


db内に情報が存在する or しないかの判別を行う検索フォームを作成しています。  
検索フォームに入力するのは、メールアドレスのみです。  
情報が存在していない場合、検索に使用したメールアドレスをそのまま、登録フォームに自動で反映させたいのですが、やり方がわからないです。  
やり方を教えていただけないでしょうか？ コードは下記のようになっています。

> controller
[code]

      def searching
        @user = User.find_by(users_email: params[:user][:users_email])
        respond_to do |format|
          if @user == nil
            format.html
            format.js { @status = "false" }
            @user = User.new
          else
            format.html
            format.js { @status = "success" }
            @entry = @user.entries.new
          end
        end
      end
    
[/code]

> view 検索フォーム
[code]

    .container-fluid.search-fruid
      = form_for(:user, action: 'searching', url: user_search_path, remote: true) do |f|
        = f.label :"メールアドレスを入力してください"
        = f.email_field :users_email, class: 'form-control'
        = f.submit "検索", class: 'btn btn-primary'
        = link_to "戻る", :back, :class => 'btn btn-default'
    
    
      %ul#searching
    
[/code]

> view 情報がなかった時の登録フォーム
[code]

    = simple_form_for @user, :url => {:action => 'user_regist' , method: "get"}, remote: true do |f|
        .form-group
          .col-lg-10
            = f.input :users_name, label: "名前"
        .form-group
          .col-lg-10
            = f.input :users_tel, label: "電話番号"
        .form-group
          .col-lg-10
            = f.input :users_email, label: "メールアドレス"
        .form-group
          .col-lg-10
            = f.input :users_zip_code, label: "郵便番号"
        .form-group
          .col-lg-10
            =f.label "都道府県"
            = f.select :users_pref_name, User.pref_name
        .form-group
          .col-lg-10
            = f.input :users_address, label: "住所"
        .form-group
          = f.button :submit, value:"登録", :class => 'btn-primary'
        = link_to '戻る', user_path, :class => 'btn btn-default'
    
[/code]

このフォームのメールアドレスの箇所を入力されてある状態にしたいです。

よろしくお願いいたします。


CC BY-SA 3.0
2016-08-09T07:23:53.853
28150
2016-08-09T09:22:33.450
13491
question
ruby-on-rails ruby
db内の情報を検索し、検索したデータをそのまま反映させる方法


回答と直接の関係はありませんが、  
`params`を直接使うのではなく、Strong Parametersを使いましょう。

DBに存在しない場合は、コントローラでStrong
ParametersからEmailを`@email`といったようなインスタンス変数に取り出して、View側に持っていけばよいだけのように思います。

simple_formは使ったことがありませんが、  
`f.input :users_email, input_html: { value: @email }`  
で値を入れれるのではないでしょうか。

もしくは  
`@user = User.new(users_email: DBに存在しなかったEmail)`  
`f.input :users_email, input_html: { value: @user.users_email }`  
の方法でもよいでしょう。


CC BY-SA 3.0
2016-08-09T08:25:26.013
28151
2016-08-09T09:22:33.450
2016-08-09T09:22:33.450
9008
9008
28150
answer