我正在使用rails创建一个facebook克隆,但我坚持使用不显示状态和内容的个人资料页面。这是代码文件:
应用程序/控制器/ profiles_controller.rb
class ProfilesController < ApplicationController
def show
@user = User.find_by_profile_name(params[:id])
if @user
@statuses = @user.statuses.all
render action: :show
else
render file: 'public/404' , status: 404 , formats: [:html]
end
end
end
应用程序/视图/简档/ show.html.erb
<%if @statuses%>
<% @statuses.each do |status| %>
<%= status.content %>
<% end %>
<% end %>
答案 0 :(得分:0)
在您的控制器操作中,要抓住@user = User.find_by_id(params[:id])
,您应该执行以下操作:
find
此外,您可以使用find_by_id
方法代替@user = User.find(params[:id])
:
user
在这种情况下,如果在数据库中找不到id
config/routes.rb
,它将抛出异常。
所以,你有一些问题。要解决这些问题,请执行以下操作:
在resources :profiles
文件中添加:
apps/views/profiles/show.html.erb
将<% if @statuses %>
<% @statuses.each do |status| %>
<div class="well"/>
<%= status.content %>
<%end%>
<%end%>
更改为:
profiles_controller.rb
在class ProfilesController < ApplicationController
def show
@user = User.find_by_id(params[:id])
if @user
@statuses = @user.statuses.all
render action: :show
else
render file: 'public/404' , status: 404 , formats: [:html]
end
end
end
中,您已经拥有了正确的代码:
http://localhost:3000/profiles/1
进行这些更改,您的个人资料页{{1}}将像魅力一样:-) [我刚刚在我的计算机上测试过]。