我正在尝试从当前用户页面链接到其他用户个人资料页面,当我点击某人的名字时,我得到以下错误: undefined method
profile_photo'为nil:NilClass`
所以我在演出视图中有这个:
<%- model_class = Account -%>
<div class="page-header">
<h1><%=t '.title', :default => model_class.model_name.human.titleize %></h1>
</div>
<dl class="dl-horizontal">
<dd><%= image_tag @account.profile_photo.url %></dd>
<dt><strong><%= model_class.human_attribute_name(:name) %>:</strong></dt>
<dd><%= @account.name %></dd>
<dt><strong><%= model_class.human_attribute_name(:gender) %>:</strong></dt>
<dd><%= @account.gender %></dd>
<dt><strong><%= model_class.human_attribute_name(:age) %>:</strong></dt>
<dd><%= @account.age %></dd>
<dt><strong><%= model_class.human_attribute_name("Date Of Birth") %>:</strong></dt>
<dd><%= (@account.year_Of_Birth.to_s) +"/"+(@account.month_Of_Birth.to_s)+"/"+(@account.day_Of_Birth.to_s) %></dd>
<dt><strong><%= model_class.human_attribute_name(:country) %>:</strong></dt>
<dd><%= @account.country %></dd>
<dt><strong><%= model_class.human_attribute_name(:favorite_Sport) %>:</strong></dt>
<dd><%= @account.favorite_Sport %></dd>
<dt><strong><%= model_class.human_attribute_name(:account_id) %>:</strong></dt>
</dl>
这在我的页面视图中:
...
<% @accounts.each do |account| %>
<tr>
<td><%= link_to account.name, account %></td>
...
这是在我的控制器上: ...
def show
@account = Account.find(params[:id])
end
...
感谢。
答案 0 :(得分:1)
问题与link_to标记有关,在此标记中,第二个参数是show action path。 但是你已经通过了对象。 请检查各自控制器和路径的路线。动作
使用命令:rake routes
然后将第二个参数更改为routes_path(account.id)
将路线更改为您需要控制器操作的路径
有关详情,请查看:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
答案 1 :(得分:0)
您可能需要检查以确保您在config/routes.rb
中为帐户设置的唯一路线是:
resources :accounts
您的错误消息表明您在profile_photo
上呼叫account
,但account
是nil
值,而不是可以接收方法呼叫的对象。< / p>
确保您的accounts_controller.rb
文件包含以下操作(即方法):
class AccountsController < ActionController::Base
def index
@accounts = Account.all
end
def show
@account = Account.find(params[:id])
end
end