Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Devise 在控制器之间传递参数设计Ruby on Rails_Devise_Ruby On Rails 5 - Fatal编程技术网

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

Devise 在控制器之间传递参数设计Ruby on Rails,devise,ruby-on-rails-5,Devise,Ruby On Rails 5,为了预定课程,用户必须首先注册。然后,我希望用户重定向到他们在注册表单之前所在的课程页面 我正在尝试通过参数传递课程id,我可以在注册表单页面上看到它们添加到参数中,但我无法将参数添加到控制器中的路径中 有什么想法吗?下面的代码将课程id作为数字6强制输入,这是有效的。我只需要将这个整数作为参数传入的变量 用户注册后用重定向设计控制器 def after_sign_in_path_for(resource_or_scope) # user_path(resource)

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

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

有什么想法吗?下面的代码将课程id作为数字6强制输入,这是有效的。我只需要将这个整数作为参数传入的变量

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

    def after_sign_in_path_for(resource_or_scope)
#       user_path(resource)
        new_booking_path(course_id: 6)
    end
课程展示页面(如果尚未登录,则将用户带入设计注册页面。我已从参数中添加了课程id)


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

设计报名表

<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>

为了预订课程,我们只需要您提供一些详细信息,以便您可以在稍后阶段登录以查看您已注册的课程。



(最少字符)



Desive已经为您介绍了这一点


基本上,您需要在为

登录路径后定义
,谢谢David,但是我遵循了这些说明,尽管我第一次按照说明操作时出现了重定向错误,以防止在用户注册后重定向回根页面。我注意到,这似乎只适用于用户登录时,而不适用于从(资源)的“注册后路径”猜测注册方法说是rooth_path,但我确实尝试查看了它是否会在我登录后将我重定向回上一页,但再次将我发送回rooth_path。上述方法确实有效,并会将注册id为6的用户带回课程。当用户按下课程页面上的BookNow按钮时,我只需要弄清楚如何在会话中存储此课程id。此book now按钮启动注册表单。我认为对于用户选项来说,模态可能是一种更简单的方式和更好的用户体验。
<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>