9

新的 ROR 程序员在这里。我正在尝试构建一个 Web 应用程序,允许用户填写表单,在其中输入公司信息,然后通过单击提交,将输入添加到数据库中。

目前,如果用户要创建一个新条目,他们会看到一些字段,例如“公司名称”。有一个空白框供他们输入新公司,旁边有一个下拉菜单,用户可以使用该菜单查看数据库中的现有公司。

<div class="field">
<%= f.label :company_name %><br />
<%= f.text_field :company_name %>

<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %>

我正在寻找一种允许用户输入新公司的方法,或者单击下拉菜单并选择现有公司。

目前:如果没有在文本框中输入任何内容并且没有从下拉列表中选择任何选项,则将其保存为空白。如果输入了某些内容,但未选择任何选项,则将其保存为空白。但是,如果输入了某些内容并从下拉列表中选择了某些内容,则会保存下拉选项。

希望我没有让它太混乱。任何帮助都将不胜感激。

提前致谢。

编辑:

我的创建操作现在看起来像这样

 def create
@company = Company.new(params[:company])
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty?

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

结尾

和表单视图:

<%= label :company_name %><br />
<%= text_field :new_company_name %>

<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %>

现在的新错误是:

参数数量错误(1 对 2)

提取来源:<%= label :company_name %>

谢谢你的帮助!

4

2 回答 2

4

您的视图中不能有两个同名的参数,因为 rails 不知道如何处理它们

@rodzyn 是对的,所以请把功劳给他.. :)

只是为了澄清:

你的表格:

<%= label_tag :new_company_name, "Company name" %><br />
<%= text_field_tag :new_company_name %>

<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %>

你的控制器:

@company = Company.new(params[:company])
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty?
于 2012-07-18T10:21:36.483 回答
2

你可以设置

<%= text_field :new_company_name %>

然后在创建动作

@company = Company.new(params[:company])
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty?
于 2012-07-18T10:07:01.503 回答