如何从另一个 MVC link_to 显示页面?
How to link_to a show page from another MVC?
我上拉时出现这个错误http://0.0.0.0:3000/activities:
ActiveRecord::RecordNotFound in ActivitiesController#index Couldn't
find Valuation with 'id'=
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
activities/index
<% @activities.each do |activity| %>
<%= render "activities/#{activity.trackable_type.underscore}/#{activity.action}", activity: activity %>
<% end %>
activities/valuations/_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
目标是当用户查看活动提要时,他们可以单击 activity 并被定向到相应估值的显示页面,他们可以在该页面上点赞或评论。
路线
resources :activities do
resources :valuations
end
如果您需要任何进一步的解释或代码来帮助我,请告诉我,否则这里是 gist of it :)
development.log
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)
您获得了嵌套资源:
resources :activities do
resources :valuations
end
这不会创建方法
valuation_path()
它创造了
activities_valuation_path()
如果你想创建你需要重构的估值路径:
resources :activities do
resources :valuations
end
resources :valuations # this will create your method
或者如果估值与 activity 密切相关,我建议使用
activities_valuation_path(:activity_id, :valuation_id)
到link_to你的显示页面我知道你有你需要的代码
resources :activities do
resources :valuations
end
- 因为它是多态的,所以使用 trackable 来查找 id 并放置以下行:
<%= link_to activity.trackable.name, activity_valuation_path(activity, activity.trackable_id) %>
- 从你的索引中取出这一行:
@valuation = Valuation.find(params[:id])
希望对您有所帮助!
我上拉时出现这个错误http://0.0.0.0:3000/activities:
ActiveRecord::RecordNotFound in ActivitiesController#index Couldn't find Valuation with 'id'= 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
activities/index
<% @activities.each do |activity| %>
<%= render "activities/#{activity.trackable_type.underscore}/#{activity.action}", activity: activity %>
<% end %>
activities/valuations/_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
目标是当用户查看活动提要时,他们可以单击 activity 并被定向到相应估值的显示页面,他们可以在该页面上点赞或评论。
路线
resources :activities do
resources :valuations
end
如果您需要任何进一步的解释或代码来帮助我,请告诉我,否则这里是 gist of it :)
development.log
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)
您获得了嵌套资源:
resources :activities do
resources :valuations
end
这不会创建方法
valuation_path()
它创造了
activities_valuation_path()
如果你想创建你需要重构的估值路径:
resources :activities do
resources :valuations
end
resources :valuations # this will create your method
或者如果估值与 activity 密切相关,我建议使用
activities_valuation_path(:activity_id, :valuation_id)
到link_to你的显示页面我知道你有你需要的代码
resources :activities do resources :valuations end
- 因为它是多态的,所以使用 trackable 来查找 id 并放置以下行:
<%= link_to activity.trackable.name, activity_valuation_path(activity, activity.trackable_id) %>
- 从你的索引中取出这一行:
@valuation = Valuation.find(params[:id])
希望对您有所帮助!