ruby on rails - software - button_to: action=> ''destroy'' busca ''show''
ruby on rails software (2)
Esto parece increíblemente similar a una pregunta que había respondido hace unos días, pero la solución no está funcionando ahora.
Estoy creando una aplicación de rieles, y estoy tratando de tener un botón para desencadenar un destructor en un controlador diferente.
El código que tengo para el botón es
<%= button_to "delete", :controller => :meals, :action => ''destroy'', :recipe_id => recipe.id, :method => :post >
cuando hago clic en el botón Eliminar, obtengo un mensaje "no coincide con las comidas / 3" que es el meal_id actual.
El destruir en el controlador de comidas se ve así
def destroy @meal = Meal.where("current_user.id => ? AND recipe_id => ?", current_user.id, params[:recipe_id]).first @meal.destroy respond_to do |format| format.html { redirect_to :controller => "user" , :action => "show" } format.xml { head :ok } end end
parece que button_to está ignorando completamente la: acción y solicitando un show que no existe y no debería existir.
Sé que es demasiado tarde para una respuesta, pero espero que pueda ayudar a alguien (utilizando Rails 4).
<%= button_to "delete", meal_path(:id => recipe.id), :method => :delete %>
¿Y cómo es parte de route.rb para eso? Porque si usa map.resources, destroy tiene la misma ruta que show pero :method => :delete
(que es un verbo virtual implementado por form y _method = delete param).
Prueba esto:
<%= button_to "delete", {:controller => :meals,
:action => ''destroy'', :id => recipe.id }, :method => :delete %>
o si la recipe
es instancia de clase de Meal
entonces
<%= button_to "delete", @recipe, :method => :delete %>
Cuidado con los corchetes.