

strongparamaterをprivateメソッド以下に定義しているのですが、定義している値は存在しないとerrorが発生しています。

自分なりに色々調べたのですが原因がわからない為、どなたかご教示お願い致します。

[![エラー画像](https://i.stack.imgur.com/kOFBi.png)](https://i.stack.imgur.com/kOFBi.png)

session_controller.rb

[code]

    class Staff::SessionsController < Staff::Base
      def new
        if current_staff_member
          redirect_to :staff_root
        else
          @form = Staff::LoginForm.new
          render action: 'new'
        end
     end
    
      def create
        @form = Staff::LoginForm.new(form)
    
          if @staff_login_form.email.present?
          staff_member = StaffMember.find_by(email_for_index: @staff_login_form.email.downcase)
        end
        if staff_member
          session[:staff_member_id] = staff_member.id
          redirect_to :staff_root
        else
          render action: 'new'
        end
      end
    end
    
      private
    
      def form
        params.require(:form).permit(:email, :password)
      end
    
[/code]

new.html.erb

[code]

    <% @title = 'ログイン' %>
    
    <div id="login-form">
      <h1><%= @tittle %></h1>
    
      <%= form_for @form, url: :staff_session do |f| %>
        <div>
          <%= f.label :email, 'メールアドレス' %>
          <%= f.text_field :email %>
        </div>
        <div>
          <%= f.label :password, 'パスワード' %>
          <%= f.password_field :password %>
        </div>
        <div>
         <%= f.submit 'ログイン' %>
        </div>
      <% end %>
    </div>
    
[/code]


CC BY-SA 4.0
2018-05-19T10:00:15.977
44084
2018-05-22T11:06:15.090
2018-05-21T15:46:10.153
19110
28576
question
ruby-on-rails
ActionController::ParameterMissingが改善されない。


インデントを修正してみてください。

[code]

    class Staff::SessionsController < Staff::Base
      # ...
    end
    
    private
    
    def form
      params.require(:form).permit(:email, :password)
    end
    
[/code]

こんなコードになっています。`form` メソッドが class 定義の外にあるのが原因ではないでしょうか?


CC BY-SA 4.0
2018-05-22T11:06:15.090
44156
2018-05-22T11:06:15.090
5288
44084
answer