在控制器之间传递参数设计Ruby on Rails

时间:2018-04-19 16:27:00

标签: devise ruby-on-rails-5

要预订课程,用户必须先注册。然后,我希望用户在注册表单之前被重定向到他们所在的课程页面。

我试图通过params传递course_id,我可以看到它们在注册表单页面上添加到参数中但我无法将参数添加到控制器中的路径中。

有什么想法吗?下面的代码将course_id强制为6号,这是有效的。我只需要将这个整数作为params传入的变量。

在用户注册后使用重定向设计控制器

<%= link_to "BOOK NOW", new_user_registration_path(course_id: @course.id),  class: "ice-btn light-btn dark-btn" %>

课程显示页面(如果尚未登录,则会让用户设计注册页面。我已经从参数中添加了course_id)

<div class="row no-gutters">
<div class="col-md-6 offset-md-3 forms card">
<div class="form-header">
<h2>In order to book a course we just need some details from you so that you can login at a later stage to view the courses you have enrolled on.</h2>
  </div>

  <div class="form-inner">
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render 'shared/devisemessage' %>

   <div class="field">
    <%= f.label "First Name" %>
    <%= f.text_field :fname %>
  </div><br />

   <div class="field">
    <%= f.label "Surname" %>
    <%= f.text_field :lname %>
  </div><br />

  <div class="field">
    <%= f.label :email %>
    <%= f.email_field :email, autofocus: true %>
  </div><br />

  <div class="field">
    <%= f.label :password %>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %>
    <%= f.password_field :password, autocomplete: "off" %>
  </div><br />

  <div class="field">
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation, autocomplete: "off" %>
  </div><br />

  <div class="actions">
    <%= f.button "Proceed to Booking page", class: "ice-btn light-btn dark-btn" %>
  </div>
<% end %>

<%= render "devise/shared/links" %>
</div>
</div>
</div>

所以从这里我需要将这个参数传递给注册表单,以便控制器中的course_id添加了正确的变量。我应该在包含变量的设计表单中添加隐藏字段吗?

设计注册表单

df_filt = df.loc[df.items.isin(list_of_items)]

1 个答案:

答案 0 :(得分:0)

Devise让你了解这一点。

  

Devise redirect to a page after signin

基本上您需要定义after_sign_in_path_for