0

我有一个表格,用户可以在其中输入他们的信息。但我还想将其中一个输入字段数据保存到另一个表中。

我有User桌子和Business桌子

<%= form_for @user, :html => {:multipart => true} do |f| %>
  ... some input fields
  <%= f.text_field :company_name %>
  ... more input fields
  <%= f.submit "Save" %>
<% end %>

我的控制器是这样的:

def edit
  @user = User.find(current_user.id)
  @biz = Business.find_or_create_by_name(params[:company_name])
  @biz.save
end 

它将数据保存在用户表中,但不将数据保存到业务表中。

4

1 回答 1

1

几件事。editRails 在显示表单和update处理 PUT(以及更新属性)时喜欢它。如果您这样做,您的方法将如下所示。

def edit
  @user = User.find(current_user.id)
end 

def update
  @user = User.find(current_user.id)
  @user.update_attributes(params[:user])
end 

如果公司名称与用户参数一起提交,我还将在用户模型中创建业务的逻辑。

在用户.rb

validates_length_of :business_name, :minimum => 2, :allow_blank => true

attr_accessor :business_name

before_validation :ensure_business

def ensure_business
  if business_name.present?
    b = Business.where(:name => business_name).first_or_create
    self.business_id = b.id
  end
end
于 2013-09-30T21:32:33.007 回答