我有一个rails网站,我想通过仪表板呈现实时网站。我已经为网站的后端创建了一个仪表板,但是当用户进行更改时,我希望他们先看到它。
这是我的
Dashboard.rb
has_many :profiles, :dependent => :destroy
has_many :blogs, :through => :profile, :dependent => :destroy
has_many :videos, :through => :profile, :dependent => :destroy
has_many :albums, :through => :profile, :dependent => :destroy
信息中心index.html
<%= render :partial => 'profiles/profile', :locals => {:profile => @profile} %>
Profile.rb
belongs_to :dashboard
has_many :blogs, :dependent => :destroy
has_many :videos, :dependent => :destroy
has_many :albums, :dependent => :destroy
_profile.html.erb
<h1><%= @profile.name %></h1>
<% album = @profile.albums.last %>
<% if album.blank? %>
<%= link_to 'Create a new album', new_album_path %></br>
<% else %>
<%= render :partial => 'albums/album', :locals => {:album => @profile.albums.last} %>
<% end %>
<% blog = @profile.blogs.last %>
<% if blog.blank? %>
<%= link_to 'Create a blog post', new_blog_path %><br/>
<% else %>
<%= render :partial => 'blogs/blog', :locals => {:blog => @profile.blogs.last}%>
<% end %>
<% video = @profile.videos.last %>
<% if video.blank? %>
<%= link_to 'Add new video', new_video_path %></br>
<% else %>
<%= render :partial => 'videos/video', :locals => {:video => @profile.videos.last} %>
<% end %>
当我通过前端查看网站时上述工作正常但是当我试图通过仪表板查看时我得到了错误
nil的未定义方法`name':NilClass
这是profile.name行
如果我删除上面的行,我会得到
未定义的方法`显示'为nil:NilClass
任何人都有任何建议我如何解决这个问题?
答案 0 :(得分:1)
您确定在仪表板控制器中定义了@profile吗?似乎@profile未定义。
答案 1 :(得分:1)
需要@profile
找到控制器内部。如果params id无效,那么它将重定向到根URL,如果有效,它将呈现页面。
def index
@profile = Profile.find_by_id(params[:id])
@profile || invalid_url!
end
private
def invalid_url!
flash[:error] = 'URL is not valid !'
redirect_to root_url
end