2015-06-03 2 views
0

Я получаю эту ошибку, когда я тяну до http://0.0.0.0:3000/activities:Как связать страницу с другим MVC?

ActiveRecord :: RecordNotFound в ActivitiesController # индекс не удалось найти Оценка с 'ид' = Line: @valuation = Valuation.find(params[:id])

activities_controller

def index 
    @activities = Activity.order("created_at desc").paginate(:page => params[:page]) 
    @valuation = Valuation.find(params[:id]) 
end 

a ctivities/индекс

<% @activities.each do |activity| %> 
    <%= render "activities/#{activity.trackable_type.underscore}/#{activity.action}", activity: activity %> 
<% end %> 

деятельности/оценки/_create

added value 
    <%= activity.created_at.strftime('%B %d at %l:%M%P') %> 
    <%= link_to activity.trackable.name, valuation_path(@valuation) %> #Trying to Fix This 

Цель состоит в том, чтобы, когда пользователи смотрят на деятельность корма они могут нажать на деятельность и быть направлены к тому, что соответствующие Страница показаний оценки, где они могут понравиться или прокомментировать это.

маршруты

resources :activities do 
    resources :valuations 
end 

Пожалуйста, дайте мне знать, если вам нужно дополнительное объяснение или код, чтобы помочь вам помочь мне в противном случае здесь развитие gist of it :)

.войти

Started GET "/activities" for 127.0.0.1 at 2015-06-03 14:14:49 -0400 
Processing by ActivitiesController#index as HTML 
    [1m[35mUser Load (0.2ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]] 
    [1m[36mHabit Load (0.1ms)[0m [1mSELECT "habits".* FROM "habits" WHERE "habits"."user_id" = ?[0m [["user_id", 1]] 
    [1m[35mActsAsTaggableOn::Tag Load (0.2ms)[0m SELECT "tags".* FROM "tags" WHERE (LOWER(name) = LOWER('ingrain')) 
    [1m[36mCACHE (0.0ms)[0m [1mSELECT "habits".* FROM "habits" WHERE "habits"."user_id" = ?[0m [["user_id", 1]] 
    [1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "habits" WHERE "habits"."user_id" = ? [["user_id", 1]] 
    [1m[36mValuation Load (0.1ms)[0m [1mSELECT "valuations".* FROM "valuations" WHERE "valuations"."id" = ? LIMIT 1[0m [["id", nil]] 
Completed 404 Not Found in 11ms 

ActiveRecord::RecordNotFound (Couldn't find Valuation with 'id'=): 
    app/controllers/activities_controller.rb:4:in `index' 


    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_source.erb (9.3ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (5.2ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.6ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (126.4ms) 


Started GET "/activities" for 127.0.0.1 at 2015-06-03 14:14:50 -0400 
Processing by ActivitiesController#index as HTML 
    [1m[35mUser Load (0.2ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]] 
    [1m[36mHabit Load (0.1ms)[0m [1mSELECT "habits".* FROM "habits" WHERE "habits"."user_id" = ?[0m [["user_id", 1]] 
    [1m[35mActsAsTaggableOn::Tag Load (0.2ms)[0m SELECT "tags".* FROM "tags" WHERE (LOWER(name) = LOWER('ingrain')) 
    [1m[36mCACHE (0.0ms)[0m [1mSELECT "habits".* FROM "habits" WHERE "habits"."user_id" = ?[0m [["user_id", 1]] 
    [1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "habits" WHERE "habits"."user_id" = ? [["user_id", 1]] 
    [1m[36mValuation Load (0.1ms)[0m [1mSELECT "valuations".* FROM "valuations" WHERE "valuations"."id" = ? LIMIT 1[0m [["id", nil]] 
Completed 404 Not Found in 8ms 

ActiveRecord::RecordNotFound (Couldn't find Valuation with 'id'=): 
    app/controllers/activities_controller.rb:4:in `index' 


    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_source.erb (9.0ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.6ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms) 
    Rendered /Users/galli01anthony/.rvm/gems/ruby-2.1.3/gems/actionpack-4.2.0.rc3/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (35.2ms) 
+0

sir .. показать рельсы development.log содержимое файла с консоли –

+0

@R_O_R сделано! :) –

+0

Что касается изменения «valuation_path (@valuation)» для «valuation_path (@ valuation.id)». Вы передаете всю оценку @valaluation в качестве параметра. – Hugo

ответ

1

Чтобы LINK_TO вашей показать страницу с кодом, я понимаю вас, имеющей нужно

  1. resources :activities do resources :valuations end
  2. Поскольку это polymorpic использование отслеживается найти идентификатор и поставить строку: <%= link_to activity.trackable.name, activity_valuation_path(activity, activity.trackable_id) %>
  3. Возьми эту строку от вашего индекса: @valuation = Valuation.find(params[:id])

Надеюсь, это поможет!

1

вы получили вложенные ресурсы:

resources :activities do 
    resources :valuations 
end 

это не создает метод

valuation_path()

создает

activities_valuation_path()

, если вы хотите создать путь оценки вам нужно реорганизовать, чтобы:

resources :activities do 
    resources :valuations 
end 
resources :valuations   # this will create your method 

или если оценка тесно связан с активностью я рекомендую использовать

activities_valuation_path (: activity_id,: valuation_id)

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