2012-07-18 8 views
9

Nuevo programador ROR aquí. Intento crear una aplicación web que permita a un usuario completar un formulario, donde ingrese la información de una empresa, y al hacer clic en enviar, agrega la entrada a una base de datos.Ruby on Rails: permite al usuario ingresar una nueva información, O haga clic en el menú desplegable para seleccionar la información existente

Por el momento, si el usuario creara una nueva entrada, vería algunos campos, por ejemplo, "Nombre de la compañía". Hay un recuadro en blanco para que coloquen una nueva compañía, y junto a eso, hay un menú desplegable que el usuario puede usar para ver las compañías existentes en la base de datos.

<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") %> 

estoy buscando una manera de permitir que el usuario introduzca una nueva empresa, o haga clic en el menú desplegable y seleccionar una empresa ya existente.

Por el momento: Si no se ingresa nada en el cuadro de texto y no se selecciona ninguna opción de la lista desplegable, se guarda en blanco. Si se ingresa algo y no se selecciona ninguna opción, se guarda en blanco. Sin embargo, si se ingresa algo y se selecciona algo del menú desplegable, se guarda la opción desplegable.

Espero que no lo haya hecho demasiado confuso. Cualquier ayuda será apreciada.

Gracias de antemano.

EDIT:

Mi ahora crean la acción parece que este fin

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 

y forma de la visión:

<%= 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") %> 

El nuevo error es ahora:

número incorrecto de argumentos (1) para 2

Extraídas Fuente: <% = etiqueta: COMPANY_NAME%
>

Gracias por su ayuda!

+0

lo qué se puede esperar si un usuario selecciona algo de desplegable y también escribir algo? – gabrielhilal

+0

Esperaría que la entrada que el usuario tipeó sea la prioridad. – Jazz

Respuesta

4

No se puede tener dos parametros con el mismo nombre, en su opinión, como carriles no sabrán qué hacer con ellos

@rodzyn tiene razón, le ruego que le de los créditos.:)

Solo para aclarar:

su formulario:

<%= 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") %> 

Su controlador:

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

Gracias por su ayuda gabrielhial y @rodzyn. ¿Podrías mirar mi edición a mi pregunta? ¡Gracias de nuevo! – Jazz

+0

que es mi culpa ... lo siento ... por favor, elimine '[: company]' en frente de '[: new_company_name]' ya que no está relacionado con la clase Company ... – gabrielhilal

+0

Gracias por aguantarme. Yo lo he hecho, pero aún así obtener el error: método no definido 'new_company_name' para la Empresa: 0xb5424860 y la fuente es extraída <% = f.text_field: new_company_name%> Saludos una vez más – Jazz

2

Puede establecer

<%= text_field :new_company_name %> 

continuación, en Crear acción

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