-1

因为这是基本问题,但我很困惑,因为我必须创建一个注册表单,它必须将数据保存在两个不同的表中,例如 1) 沙龙 2) 用户 我有沙龙数据,例如公司名称地址 url 这些所有字段都应该保存在沙龙表和电子邮件以及密码和地址应保存在用户表中。如何以好的方式做到这一点

我的视图源代码是这样的

<%= form_tag users_path(@users), :method => :post do |f| %>


<%= devise_error_messages! %>

  <div><%=  label_tag :business_name %><br />
  <%= text_field_tag :business_name %></div

  <div><%=  label_tag :website_url %><br />
  https://<%= text_field_tag :website %></div>

  <div><%=  label_tag :business_adress %><br />
  <%= text_field_tag :business_adress %></div>


  <div><%=  label_tag :owners_name %><br />
  <%= text_field_tag :name %></div>

  <div><%=  label_tag :phone_number %><br />
  <%= text_field_tag :phone_number %></div>

  <div><%=  label_tag :email %><br />
  <%= email_field_tag :email %></div>

  <div><%= label_tag :password %><br />
  <%= password_field_tag :password %></div>

  <div><%= label_tag :password_confirmation %><br />
  <%= password_field_tag :password_confirmation %></div>

  <div><%= submit_tag "Sign up" %></div>
<% end %>

另外我想知道如何管理控制器端代码并​​将字段数据保存在不同的表中

4

3 回答 3

1

在控制器中,Users_controller 将如下所示:- rails 4 with strong parameters

class UsersController < ApplicationController
 def create
   @user = User.create!(user_params)
   @user.salons.create!(salon_params)
 end

private
 def user_params
    params.require(:user).permit!(:name,:phone,:email, :password) #permit those parameters which you required 
 end
 def salon_params
   params.permit!(:business_name, :website, :business_adress) 
 end 
end

在模型中

class User < ActiveRecord::Base           
     has_many :salons        
  end   

谢谢 希望它会有所帮助

于 2013-07-26T09:58:57.027 回答
0

假设您使用设计作为身份验证解决方案,并且您已经建立了它们之间的关系,您可能想看看这个问题,接受的答案基本上是:

  1. 在您的 Rails 应用程序目录中运行rails generate devise:views以提取设计注册表单并将您的表单与下面的修改插入其中。
  2. 修改提取的表单 (app/views/devise/registrations/new.html.erb) 以预先创建一个空沙龙 ( resource.build_salon)
  3. 而不是将沙龙模型的表单字段放在主要的周围form_for块内,而是使用创建一个嵌套块fields_for :salon do |s|
  4. 并将属于您的沙龙模型的所有表单字段放入该块中,使其最终看起来像这样

    <%= form_tag users_path(@users), :method => :post do |f| %>
    
    <%= devise_error_messages! %>
    
     <%= f.fields_for :salon do |s| %>
       <div><%= s.label :business_name %><br />
       <%= s.text_field :business_name %></div
    
       <div><%= s.label :website_url %><br />
       https://<%= s.text_field :website %></div>
    
     <% end %>
    
     <div><%=  label_tag :email %><br />
     <%= email_field_tag :email %></div>
    
     <div><%= label_tag :password %><br />
     <%= password_field_tag :password %></div>
    
     <div><%= label_tag :password_confirmation %><br />
     <%= password_field_tag :password_confirmation %></div>
    
     <div><%= submit_tag "Sign up" %></div>
    <% end %>
    

希望这可以帮助

于 2013-07-26T11:24:31.863 回答
0

首先,您需要在两个模型之间创建关联,查看此链接以了解 Rails 关联。

在模型之间创建关联后,请查看此链接以了解嵌套属性,这允许您通过父项将属性保存在关联记录上。

例子,

类用户 < ActiveRecord::Base

  has_many :salons, :dependent =>:destroy   

  accepts_nested_attributes_for :salons 

结尾

类沙龙 < ActiveRecord::Base

属于_to:用户

结尾

然后在您的 UserController 的新操作中,您需要像这样构建沙龙,

@user = User.new

@user.salons.build

然后在您的用户表单中,您可以像这样从用户那里获得沙龙的价值

<%= form_for @user do |f| %>
  ...

  <%= f.fields_for :salons do |builder| %>
    <%= f.text_field :business_name %>
    ...
  <% end %>
  <%= f.submit "Submit" %>
<% end %>
于 2013-07-26T10:24:04.380 回答