ruby-on-rails - URL 中的参数未传递给表单 - Rails 4

标签 ruby-on-rails ruby devise single-table-inheritance sti

访问 URL localhost:3000/buyers/sign_up?email=abc%40abc.com 时,会显示注册表单,但电子邮件字段保持为空,并且不会自动填写 abc@ abc.com。 这可能与实现的单表继承 (STI) 有关吗? -> Buyer 继承自 User。

routes.rb

  devise_for :users, :controller => {:sessions => 'sessions'}, :skip => :registrations do
    delete '/logout', :to => 'sessions#destroy', :as => :destroy_user_session
    get '/login', :to => 'sessions#new', :as => :new_user_session
    post '/login', :to => 'sessions#create', :as => :new_user_session
  end

  devise_for :sellers, :skip => :sessions
  devise_for :buyers, :skip => :sessions
  resources :users

devise/registrations/new.html.erb

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

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

  <div><%= f.submit "Sign up" %></div>
<% end %>

用户 Controller

class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]


def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:first_name, :last_name, :name, :type, :email)
    end
end

最佳答案

刚找到答案。 只需要在表单中添加值+检查电子邮件参数是否存在的条件:

<%= f.email_field :email, value: params[:email] %>

关于ruby-on-rails - URL 中的参数未传递给表单 - Rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921170/

相关文章:

ruby-on-rails - 目录 : Filter generated JSON to certain parameters

ruby-on-rails - Devise_token_auth 重置密码流程 401 错误

ruby-on-rails - "stack level too deep error"每次更改 routes.rb

ruby-on-rails - Rails 3 Eager Loading with conditions - 如何访问急切加载的数据?

html - Rails - 渲染数据库的 HTML 输出

ruby - 在 Ruby 中,符号 "=>"在方法的参数列表中表示什么?

ruby-on-rails - 准确测量 rspec/ capybara 测试时间?

ruby-on-rails - puma:更快的服务器重新加载?

ruby - 使用 Rails 4 和 Devise 3.1.0 登录子域

ruby-on-rails - RoR设计: Sign in with username OR email