Ruby on rails Rails设计,两个模型在同一页面上有自己的登录表单

Ruby on rails Rails设计,两个模型在同一页面上有自己的登录表单,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,所以,我有两个模型:顾客模型和商店模型。两者都有非常不同的功能,所以按角色将它们分开对我没有好处 我想把两份登记表放在一页上,两份签到表放在一页上。比如说,左边是“嘿,以客户身份登录!”而另一边是“哟,老兄,我听说你是一家商店,在这里登录”。我很难分离表单本身,我也不完全确定我应该为控制器方面做些什么 据我所知,登录页面的链接必须在路由文件中的design_for bit的范围内。鉴于我计划持有用于登录或注册的代码的视图/控制器不限于一个模型,这样做似乎没有意义 据我所知,我的主要麻烦将是找出设

所以,我有两个模型:顾客模型和商店模型。两者都有非常不同的功能,所以按角色将它们分开对我没有好处

我想把两份登记表放在一页上,两份签到表放在一页上。比如说,左边是“嘿,以客户身份登录!”而另一边是“哟,老兄,我听说你是一家商店,在这里登录”。我很难分离表单本身,我也不完全确定我应该为控制器方面做些什么

据我所知,登录页面的链接必须在路由文件中的design_for bit的范围内。鉴于我计划持有用于登录或注册的代码的视图/控制器不限于一个模型,这样做似乎没有意义

据我所知,我的主要麻烦将是找出设计图,然而,我认为它可能比这更复杂


如果我能得到任何帮助或资源,我将不胜感激。谢谢。

所以,我原以为这会有点复杂,但似乎相当简单

因此,我只是路由到一个自定义控制器操作:

get '/login' => 'pages#login'
行动本身:

def login
  @shop = Shop.new
  @user = User.new
  render 'devise/sessions/new'
end
及表格:

<div class="col-md-offset-1 col-md-4">
  <h2>Mechanic Login</h2>
  <%= simple_form_for(@shop, as: :shop, url: session_path(:shop)) do |f| %>
    <div class="form-inputs">
      <%= f.input :email, required: false, autofocus: true %>
      <%= f.input :password, required: false %>
      <%= f.input :remember_me, as: :boolean if Devise.mappings[:shop].rememberable? %>
    </div>

    <div class="form-actions">
      <%= f.button :submit, "Log in", id: 'shop_submit' %>
    </div>
  <% end %>
</div>
<div class="col-md-offset-2 col-md-4">
  <h2>User Login</h2>
  <%= simple_form_for(@user, as: :user, url: session_path(:user)) do |f| %>
    <div class="form-inputs">
      <%= f.input :email, required: false, autofocus: true %>
      <%= f.input :password, required: false %>
      <%= f.input :remember_me, as: :boolean if Devise.mappings[:user].rememberable? %>
    </div>

    <div class="form-actions">
      <%= f.button :submit, "Log in", id: 'user_submit' %>
    </div>
  <% end %>
</div>

机械登录
用户登录

我知道你说过你不喜欢这个角色,但那可能是你最好的选择。它们仍然可以是单独的模型,但继承自
User
,然后您可以根据角色定义每个模型的工作方式(即
User::Customer
/
User::Shop
)。这将允许从同一表单登录,而无需任何疯狂的控制器/路由逻辑。请查看此答案,并提供一些关于此问题的好建议@然而,我想使用两种不同的形式。