2015-11-21 3 views
0

Я честно даже не знаю, с чего начать эту проблему, но я реализовал функцию «как» на своем сайте и когда я смотрю на console Я вижу ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО длинную инструкцию SQL.Rails - реализация «подобной» функции и бесконечный цикл

Я не буду размещать все мои dev.log, потому что это просто НЕВЕРОЯТНО долго, но вот отрывок из некоторых ошибок ..

Started POST "/recipes/1/like?like=true" for 127.0.0.1 at 2015-11-20 22:46:45 -0500 
    Processing by RecipesController#like as HTML 
    Parameters: {"authenticity_token"=>"b64tIveTCtassgzKoJ/d65c72b3DfLmkC1ddQrCRBsbxnAuKMYpnz8L/+m5SsJ8to57v4sFXSkLIZB9QdFXdTQ==", "like"=>"true", "id"=>"1"} 
    ^[[1m^[[35mRecipe Load (0.1ms)^[[0m SELECT "recipes".* FROM "recipes" WHERE "recipes"."id" = ? LIMIT 1 [["id", 1]] 
    ^[[1m^[[36mCACHE (0.0ms)^[[0m ^[[1mSELECT "recipes".* FROM "recipes" WHERE "recipes"."id" = ? LIMIT 1^[[0m [["id", "1"]] 
    ^[[1m^[[35mCACHE (0.0ms)^[[0m SELECT "recipes".* FROM "recipes" WHERE "recipes"."id" = ? LIMIT 1 [["id", "1"]] 

А потом он просто повторяет, что SQL заявление через ~ 10000 строк, а затем переключается на эту ошибку

15008 app/controllers/recipes_controller.rb:46:in `like' 
15009 app/controllers/recipes_controller.rb:46:in `like' 
15010 app/controllers/recipes_controller.rb:46:in `like' 
15011 app/controllers/recipes_controller.rb:46:in `like' 
15012 app/controllers/recipes_controller.rb:46:in `like' 
15013 app/controllers/recipes_controller.rb:46:in `like' 
15014 app/controllers/recipes_controller.rb:46:in `like' 
15015 app/controllers/recipes_controller.rb:46:in `like' 
15016 app/controllers/recipes_controller.rb:46:in `like' 
15017 app/controllers/recipes_controller.rb:46:in `like' 

Я вроде застрял, и я надеялся, что кто-то мог бы указать в в правильном направлении.

Вот мой код:

Контроллер

def like 
    @recipe = Recipe.find(params[:id]) 
    Like.create(like: params[:like], chef: Chef.first, recipe: @recipe) 
    flash[:success] = "Your selection was successful" 
    redirect_to :back 
end 

Модель:

class Like < ActiveRecord::Base 
    belongs_to :chef 
    belongs_to :recipe 
end 

Я соответствующий "has_many" в моих других контроллеров»

миграции:

class CreateLikes < ActiveRecord::Migration 
    def change 
    create_table :likes do |t| 
     t.boolean :like 
     t.integer :chef_id, :recipe_id 
     t.timestamps 
    end 
    end 
end 

Вид:

<%= link_to like_recipe_path(@recipe, like: true), method: :post do %> 
    <i class="glyphicon glyphicon-thumbs-up"></i> 
<% end %> 
+0

Это не похоже на достаточное количество данных – ImranNaqvi

+0

'like.create (like: params [: like], chef: Chef.first, recipe: @recipe)' Откуда это «как» переменная/метод? Кажется, это ваша модель Like, но вы ее не настраиваете. Разве вы не опубликовали весь фрагмент кода? Это может быть полезно для нас, если вы можете разместить дополнительную информацию. Не могли бы вы сделать это? –

+0

@BryanOemar HA! Хороший улов. Вы абсолютно правы ... «like» не существует, и вместо этого он должен быть «Like.create». –

ответ

0

С информацией выше, я думаю, что единственный вывод, который я могу сделать, что код redirect_to :back звонит действие, которое будет снова вызовите действие like, что может привести к циклу.

Например, если вы вызываете действие «как», и действие «как» перенаправляется обратно на «подобное» действие, оно застревает в цикле.

Попробуйте отобразить страницу, если вы хотите остаться на той же странице или redirect_to: an_explicit_action, где вы задаете свои переменные, а затем отобразите требуемую страницу.

Смежные вопросы