Я работаю над мультисайтом для клиента для сайта скейтбординга. Пока все здорово, но я начинаю зацикливаться на всей частичной вещи. У меня есть сайт и сайт has_many: альбомы (альбом также принадлежит сайту), но когда я пытаюсь отображать альбомы с сайта на домашней странице сайта, я получаю undefined method `model_name 'для NilClass: Class?Rails 3 визуализировать частичный вид снаружи?
Я пытаюсь отобразить альбомы/_album.html.erb на сайтах/странице показа, чтобы отобразить последний альбом сайта на главной странице сайта.
Альбомы Контроллер
class AlbumsController < ApplicationController
def index
@albums = Album.all
end
def show
@album = Album.find(params[:id])
end
def new
@album = Album.new
end
def edit
@album = Album.find(params[:id])
end
def create
@album = current_site.albums.build(params[:album])
if @album.save
redirect_to albums_path, :notice => 'Album was successfully created.'
end
end
def update
@album = Album.find(params[:id])
if @album.update_attributes(params[:album])
redirect_to album_path(@album), :notice => 'Album was successfully updated.'
end
end
def destroy
@album = Album.find(params[:id])
@album.destroy
end
end
Сайты Контроллер
class SitesController < ApplicationController
def index
@sites = Site.all
end
def show
@site = Site.find_by_subdomain!(request.subdomain)
end
def new
@site = Site.new
end
def edit
@site = Site.find(params[:id])
end
def create
@site = Site.new(params[:site])
if @site.save
redirect_to @site, :notice => 'Signed up!'
end
end
def update
@site = Site.find(params[:id])
if @site.update_attributes(params[:site])
redirect_to @site, :notice => 'Site was successfully updated.'
end
end
def destroy
@site = Site.find(params[:id])
@site.destroy
end
end
сайта Show.html
<p id="notice"><%= notice %></p>
<p>
<b>First name:</b>
<%= @site.first_name %>
</p>
<p>
<b>Last name:</b>
<%= @site.last_name %>
</p>
<p>
<b>Subdomain:</b>
<%= @site.subdomain %>
</p>
<%= render :partial => 'albums/album'%>
<%= link_to 'Edit', edit_site_path(@site) %> |
<%= link_to 'Back', sites_path %>
Альбомы/_album.html.erb
<%= div_for @album do %>
<h2><%= @album.title %></h2>
<%= image_tag @album.photo.url(:small) %>
<% end %>
Я пропускаю что-то в моем контроллере альбомов?
Пробовал выше, но до сих пор не работают. Все работает отлично, за исключением случаев, когда у меня есть '<% = @ album.title%>' rails говорит undefined method 'title ' – coletrain
Атрибут экземпляра" @album "никогда не определен в SiteController, поэтому вы не можете его использовать. Попробуйте использовать локальный атрибут <% = album.title%> –
YOU THE MAN! благодаря :) – coletrain