Forum: Rails-ES param is missing or the value is empty: productos

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
6cc2cd4ff57096de96a77e73ea637201?d=identicon&s=25 Sebastian Palivoda (sebastianpalivoda)
on 2014-09-26 02:02
buenas gente, ya no se donde acudir con mi problema. Necesito aprender a
usar Ruby on rails para un trabajo pero toda la informacion q encuentro
es de rails 3 o esta en ingles y la verdad se algo pero no del todo

genere un modelo Productos,
los metodos new , index y edit se crearon automaticamente con la
instruccion rails g controller productos index new edit
los demas los hice a mano por q los necesito para guardar en la base de
datos

cree una vista new en productos
q le puse esto, busque por todos lados y con esta fue donde mas cerca
estuve de guardar en base de datos q es la q se usa por defecto en rails

<%=  form_tag productos_path, method: :post do%>
  <% if @productos.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@productos.errors.count, "error") %> prohibited
this productos from being saved:</h2>

      <ul>
      <% @productos.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= label_tag :titulo %><br>
    <%= text_field_tag :titulo%>
  </div>
  <div class="field">
    <%= label_tag :descripcion %><br>
    <%= text_field_tag :descripcion %>
  </div>
  <div class="field">
    <%= label_tag :imagen %><br>
    <%= text_field_tag :imagen %>
  </div>

  <div class="actions">
    <%= submit_tag %>
  </div>
<% end %>


relleno todos los campos y al darle al boton me dice esto:

param is missing or the value is empty: productos

Extracted source (around line #60):
58
59
60
61
62


  def productos_params
      params.require(:productos).permit(:titulo, :descripcion, :imagen)
   end
end

sin embargo creo q los parametros estan bien

Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"3rUoNo5fdqN3LJN5gb8X6y+xE+1BjZxBnSkLwCjwQpI=",
 "titulo"=>"coca",
 "descripcion"=>"cola",
 "imagen"=>"skdhasjkdh.png",
 "commit"=>"Save changes"}

este es el controlador:

class ProductosController < ApplicationController
  before_action :set_productos, only: [:show, :edit, :update, :destroy]
    def index
    @productos = Productos.all

    end

    def new
      @productos = Productos.new
    end

    def edit
    end

    def update
    respond_to do |format|
      if @productos.update(productos_params)
        format.html { redirect_to @productos, notice: 'Usuario was
successfully updated.' }
        format.json { render :show, status: :ok, location: @productos }
      else
        format.html { render :edit }
        format.json { render json: @productos.errors, status:
:unprocessable_entity }
      end
    end
  end

    def create
    @productos = Productos.new(productos_params)

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

  def destroy
    @productos.destroy
    respond_to do |format|
      format.html { redirect_to usuarios_url, notice: 'Usuario was
successfully destroyed.' }
      format.json { head :no_content }
    end
  end


  def set_productos
      @productos = Productos.find(params[:id])
    end

  def productos_params
      params.require(:productos).permit(:titulo, :descripcion, :imagen)
   end
end


básicamente se me acabaron los lugares donde buscar respuestas si
alguien tiene la mas leve idea de q puede estar pasando o por donde
deberia seguir investigando le agradeceria mucho
571b6dd148a79f321b2ecf0300681db9?d=identicon&s=25 Ivan Hinojal (ivan_h)
on 2014-10-27 09:57
Te contesto asi rapidamente. Los parametros tal cual los estas pasando
te van a dar problemas.

En tu caso el modelo es 'producto'. Para generar el formulario de un
producto deberias usar form_for:

  #views/products/_form.html.erb ??
  form_for @product ... do |form|
    ...
    form.text_field :titulo
    ...
  end

Si relllenas el formulario con el codigo anterior te acabara pasando los
parametros como:
  product[titulo]
  product[descripcion]

Asi cuando la accion del controlador que reciba los datos, los podra
interpretar correctamente como estabas haciendo tu con:

  params.require(:productos).permit(:titulo, :descripcion, :imagen)

De lo contrario, como estabas pasando los paremetros anteriormente solo
los podras leer usando params[:titulo]. Pero esto esta lejos (en tu uso
actual de producto muy lejos) de ser lo ideal. No me enrollo, pero los
parametros asi pasados no se suelen utilizar con nada que tenga que ver
con un modelo.

Como nota final, en el controlador el modelo siempre deberia ser
singular (product), las tablas las creara en plural (products). Yo
usaria ingles para escribir los modelos, en español puedes tener
problemas para los cambios de numero, por ejemplo: que lo mismo rails se
piensa que el plural de 'persona' es 'persons' :D

_____________________________________________________
Aplicaciones web en rails a medida: http://drails.com
This topic is locked and can not be replied to.