我对rails和编写我的第一个应用程序相当陌生。只是想不出怎么在我的控制器里瞄准下面的东西。
控制器
def index
@tool = Tool.find(params[:id])
@favorites = current_user.favorites
@tools = Tool.where(user_id: current_user).order("created_at DESC")
@user = current_user
end索引视图
%h2 My Favorite Tools
- @favorites.each do |tool|
= image_tag tool.cover_filename.url
%h2= link_to tool.title, tool
%p= tool.subtitle
%p= @tool.impressionist_count
%p= link_to @tool.get_upvotes.size, like_tool_path(@tool), method: :get
%p= link_to "Edit", edit_tool_path(tool)
%p
http://ocubit.com/tools/
= @tool.id
%p= time_ago_in_words(tool.created_at)
%h2 My Tools
- @tools.each do |tool|
= image_tag tool.cover_filename.url
%h2= link_to tool.title, tool
%p= tool.subtitle
%p= @tool.impressionist_count
%p= link_to "Edit", edit_tool_path(tool)
%p
http://ocubit.com/tools/
= @tool.id
%p= time_ago_in_words(tool.created_at)
= link_to "View Your Profile", '/users/'+@user.id.to_s
-if @user.use_gravatar?
= image_tag gravatar_for @user
- else
= image_tag @user.avatar_filename.url
%h1= @user.username
= link_to "Edit", edit_user_registration_path如果在浏览器中运行此操作,则会出现以下错误:
ActiveRecord::RecordNotFound in ToolsController#index
Couldn't find Tool with 'id'=我已经将控制器改为(测试)
@tool = Tool.find(1)这是可行的,所以问题就在这里。我就是搞不懂。
提前感谢您的帮助!
发布于 2016-09-04 17:04:09
你其实不需要这句话:
@tool = Tool.find(params:id)
如果您在索引视图中,则需要显示所有工具,而不仅仅是一个工具。THat将用于:show视图。在索引视图中没有params:id,而不是在url中指定。
所以:
def index
@user = current_user
@favorites = @user.favorites
@tools = @user.tools.order("created_at DESC")
end
%h2 My Favorite Tools
- @favorites.each do |tool|
= image_tag tool.cover_filename.url
%h2= link_to tool.title, tool
%p= tool.subtitle
%p= tool.impressionist_count
%p= link_to tool.get_upvotes.size, like_tool_path(tool), method: :get
%p= link_to "Edit", edit_tool_path(tool)
%p
http://ocubit.com/tools/
= tool.id
%p= time_ago_in_words(tool.created_at)
%h2 My Tools
- @tools.each do |tool|
= image_tag tool.cover_filename.url
%h2= link_to tool.title, tool
%p= tool.subtitle
%p= tool.impressionist_count
%p= link_to "Edit", edit_tool_path(tool)
%p
http://ocubit.com/tools/
= tool.id
%p= time_ago_in_words(tool.created_at)
= link_to "View Your Profile", '/users/'+@user.id.to_s
-if @user.use_gravatar?
= image_tag gravatar_for @user
- else
= image_tag @user.avatar_filename.url
%h1= @user.username
= link_to "Edit", edit_user_registration_path发布于 2016-09-04 16:58:50
这是由于params[:id]等于nil。尝试打开此URL,然后将代码更改为:
# open this URL to pass parameter tool_id
http://localhost:3000/favorites?tool_id=1
# in view
<%= link_to "Favorites", favorites_path(tool_id: 1) %>
# controller
def index
@tool = Tool.find(params[:tool_id])
end发布于 2016-09-04 17:02:52
它们的关键是索引控制器中没有params:id。删除这一行:@tool = Tool.find(params:id)
不要使用“工具”,而要在视图中使用“工具”
https://stackoverflow.com/questions/39319144
复制相似问题