Как получить значения из почтовой формы и использовать их в контроллере rails - PullRequest
0 голосов
/ 04 апреля 2020

Мой контроллер должен использовать значения из формы, чтобы получить пользователя и начать сеанс.

значения, похоже, не публикуются, сеанс никогда не запускается, оператор else всегда выполняется, а не if, который необходимо выполнить.

controller

def new
    end

def create
    uid = params[:uid]
    role = params[:role]

    user=User.find_by(userid:uid,role:role)
    if user 

        session[ :user_id]=user.id
        redirect_to controller: 'stuff', action: 'index'
    else
        render 'new', alert:
          "err"
        end
end 

новый. html .erb VIEW

<h1 class ="card-header"> Log IN </h1>

            <%= form_for :session, url: sessions_path do |f| %>
            <div class="form-group">
                <%= f.label :uid %>
                <%= f.text_field :uid %>
            </div>

            <div class="form-group">
                <%= f.label :role %>
                <%= f.text_field :password %>
            </div>



            <div class="form-group">
                <%= submit_tag 'Log In' %>                
            </div>
            <% end %>
        </div>

маршруты

resources :sessions

1 Ответ

1 голос
/ 04 апреля 2020

ваш параметр uid и role будет доступен внутри символа, называемого session

, поэтому параметры будут выглядеть следующим образом


params: {
# other  symbols
  session: {
     uid: // your uid,
     role: // your role
  }
}

, поэтому при доступе к uid и роли вот так

uid = params[:uid]
role = params[:role]

это будет ноль, поскольку они хранятся внутри символа сеанса.

, поэтому правильный способ доступа к ним такой:

def create
    uid = params[:session][:uid]
    role = params[:session][:role]

    user=User.find_by(userid:uid,role:role)
    if user 

        session[ :user_id]=user.id
        redirect_to controller: 'stuff', action: 'index'
    else
        render 'new', alert:
          "err"
        end
end 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...