Rails рендерит сайт в контроллере difnet - PullRequest
0 голосов
/ 10 марта 2012

У меня есть сайт рельсов, и я хотел бы сделать живой сайт через панель инструментов.Я создал информационную панель для серверной части сайта, но когда пользователь вносит изменения, я бы хотел, чтобы они увидели это в первую очередь.

Вот мой

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 %>

При просмотре сайта все выше отлично работаетчерез интерфейс, но при попытке просмотреть его через панель инструментов я получаю сообщение об ошибке

неопределенный метод `name 'для nil: NilClass

Какойэто строка profile.name

Если я удаляю строку выше, я получаю

неопределенный метод "показывает" для nil: NilClass

У кого-нибудь есть предложения, как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Там должно быть @profile найти внутри контроллера.Если идентификатор params недействителен, он будет перенаправлен на корневой 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
1 голос
/ 10 марта 2012

Вы уверены, что определили @profile в контроллере приборной панели?Похоже, что @profile не определен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...