2016-07-29 18 views
0

Ich bin neu in Rails und ich habe ein Problem mit den Ergebnissen einer Active Record-Abfrage.Entfernen Sie ein Element aus dem Ergebnis einer Active Record-Abfrage

Ich habe eine Klassenmethode (this_week), die 3 Rezept Datensätze aus meiner Datenbank zurückgibt. Ich möchte einen der zurückgegebenen Datensätze aus der Abfrage (nicht der Datenbank) löschen, während die anderen 2 Datensätze beibehalten.

Als ich in meiner Ansicht für die Index-Seite bin, und versuche, eine der Datensätze zu löschen, der zurückgegeben wird ich die folgende Fehlermeldung erhalten: „Routing-Fehler Keine Route treffer [GET]„/ Lomo% 20saltado“

Wie kann ich diesen Teil der zurückgegebenen Abfrage löschen?

Jede Hilfe, die sehr geschätzt werden würde zur Verfügung gestellt werden könnte.

Modell

class LineItem < ActiveRecord::Base 

    belongs_to :recipe 
    belongs_to :recipe_collection 

    def self.this_week 
    @line_items = LineItem.order("RANDOM()").limit(3) 
    @line_items.map{ |line_item| line_item.recipe.title } 
    end 

end 

Ansicht

<%= @line_items.this_week[0] %> <%=link_to 'Remove', @line_items.this_week.delete_at(0) %> <br> 

-Controller

class LineItemsController < ApplicationController 
    include UserRecipe #Error: Couldn't find recipe with id/off: undefined meth: Set_rec_collect 
    before_action :set_recipe_collection, only: [:create] 
    before_action :set_line_item, only: [:show, :edit, :update, :destroy, :last_eaten] 

    def index 
    @line_items = LineItem.where(nil) 
    @line_items = LineItem.all 
    @line_items.this_week 

    end 

Routen

Rails.application.routes.draw do 
    resources :line_items 
    resources :recipe_collections 
    devise_for :users 
    resources :recipes 
    root "recipes#index" 
end 

enter image description here

Antwort

0

Hier eine der Lösungen ist: Ihre Ansicht:

<%=link_to 'Remove', @line_items(remove_item: params[:remove_item].to_i + 1) %> 

in Ihrem Controller:

@line_items = LineItem.all 
@line_items = @line_items.limit(LineItem.count - params[:remove_item].to_i) if params[:remove_item].present? 
+0

Nach dem obigen Code hinzufügen, bekam ich die Fehlermeldung: „/ home/gregb/workspace/Sandbox/rezept_box/app/views/line_items/index.html.erb: 49: Syntaxfehler, unerwartet '(', erwartet ')' ... (link_to 'Entfernen', @line_items (remove_item: params [: remove_i ... ... /home/gregb/workspace/Sandbox/recipe_box/app/views/line_items/index.html.erb:49: sy ntax error, unexpected ')', erwartet keyword_end ... arams [: remove_item] .to_i + 1)); @ output_buffer.safe_append = '...^" –