私のアプリでは、Deviseを認証に使用しています。ユーザーは、トークンがパラメータとして添付されたリンクを介して、アプリケーションにsign_inに招待することができます。Rails/Devise:sign_inの後にparamを渡す
リンクが見えます。 g。
https://chaos-jadz.c9users.io/tokens/?token_value=88042c1c-822e-4e80-b911-3c25a41fdc3f
ユーザーがサインインすると、アプリはルートパスにリダイレクトされます。
私が今したいのは、ユーザーがサインインした後にtoken_valueが存在する場合、トークンをparamとして特定のコントローラ/アクションにリダイレクトすることです。
私は、Deviseが提供するafter_sign_in_pathメソッドについて認識しています。 sign_inを指定したコントローラ/アクションにリダイレクトすることは問題ありません。しかし、私はコントローラ/アクションにもtoken_valueパラメータを渡す方法を知らない。
これは私のsign_inフォーム(私は隠しフィールドとして、ここでのparamを使用しています)です:あなたは助けることはでき
<div class="panel panel-default devise-bs" style="font-family:arial">
<div class="panel-heading">
<h4><%= t('.sign_in', default: 'Sign in') %></h4>
</div>
<div class="panel-body">
<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { role: 'form' }) do |f| %>
<div class="form-group">
<%= f.label :spielername %>
<%= f.text_field :username, autofocus: true, class: 'form-control', placeholder: "player101" %>
</div>
<div class="form-group">
<%= f.label :password %>
<%= f.password_field :password, autocomplete: 'off', class: 'form-control' %>
</div>
<div class="form-group">
<%= f.hidden_field :token, :value => params[:token_value], class: 'form-control' %>
</div>
<% if devise_mapping.rememberable? %>
<div class="checkbox">
<%= f.label :remember_me do %>
<%= f.check_box :remember_me %> <%= t('.remember_me', default: 'Remember me') %>
<% end %>
</div>
<% end %>
<%= f.submit t('.sign_in', default: 'Sign in'), class: 'btn btn-primary' %>
<% end %>
</div>
</div>
<div class="col-xs-12 shared-links">
<%= render 'devise/shared/links' %>
</div>
?
これはあなたを助けるかもしれません:https://stackoverflow.com/questions/14355767/how-to-add-parameters-in-url-of-ruby-on-rails – Jaeger
私はこれが役立つか分かりません。私はparamsの使い方を知っています。私の問題は、デベロッパーでサインインした後に、新しいコントローラにこれらを渡す方法がわからないことです。 – Oliver
私はお詫びします、私は私と一緒にテストできるRoRプロジェクトはありませんが、あなたが次のことをすればどうなりますか? (アプリケーションコントローラでは、私が思う) 'def after_sign_in_path root_path、token_value => 'あなたのデータ' end' – Jaeger