首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在控制器之间传递参数设计Ruby on Rails

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

Stack Overflow用户
提问于 2018-04-19 16:27:00
回答 1查看 226关注 0票数 0

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def after_sign_in_path_for(resource_or_scope)
#       user_path(resource)
        new_booking_path(course_id: 6)
    end

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= link_to "BOOK NOW", new_user_registration_path(course_id: @course.id),  class: "ice-btn light-btn dark-btn" %>

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

设计注册表单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2018-04-19 20:10:09

Devise已经让你做了这方面的工作。

Devise redirect to a page after signin

基本上,您需要定义after_sign_in_path_for

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49925949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文