Hi,
I''m learning rails and my first application is a simple gallery that
pulls photos from flickr using flickraw.
The site has 3 main zones:
Left: where all albums are listed
Center: where a photo is shown
Bottom: where I have a few thumbnails
I already build everything but using only one Controller. Now I would
like to separate some actions and have something like this:
Controllers
Gallery
- index (main page)
Albuns
- index (list all photosets)
- show (specific phototset from show/id)
Photos
- index (list all photos)
- show (specific photo from show/id)
controllers/albums_controller.rb:
class AlbumsController < ApplicationController
require ''flickraw''
@@key = ''123''
@@user= ''123''
def index
@albums = flickr.photosets.getList(:api_key => @@key, :user_id =>
@@user)
end
end
views/albums/index.html.erb
<% content_for :albums do %>
<%= render ''shared/albums'' %>
<% end %>
views/shared/_albums.html.erb
<% albums.each do |a| %>
<%= link_to (a.title, :controller => ''albums'', :action
=> ''show'', :id
=> a.id) %><br />
<% end %>
The problem is I can''t share partials between views from other
Controllers.
If I call the partial from the controller Albums everything work as
expected.
If I call it from other Controller, the variable albums is nil.
I already used :object => @albums, :collections => @albums and locals
=>
{ :albums => @albums } but nothing.
What is wrong?
Thanks
--
Posted via http://www.ruby-forum.com/.
2009/10/8 Nuno Neves <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>:> > Hi, > > I''m learning rails and my first application is a simple gallery that > pulls photos from flickr using flickraw. > > The site has 3 main zones: > > Left: where all albums are listed > Center: where a photo is shown > Bottom: where I have a few thumbnails > > I already build everything but using only one Controller. Now I would > like to separate some actions and have something like this: > > Controllers > > Gallery > - index (main page) > > Albuns > - index (list all photosets) > - show (specific phototset from show/id) > > Photos > - index (list all photos) > - show (specific photo from show/id) > > controllers/albums_controller.rb: > > class AlbumsController < ApplicationController > require ''flickraw'' > @@key = ''123'' > @@user= ''123'' > > def index > @albums = flickr.photosets.getList(:api_key => @@key, :user_id => > @@user) > end > end > > views/albums/index.html.erb > > <% content_for :albums do %> > <%= render ''shared/albums'' %> > <% end %> > > views/shared/_albums.html.erb > > <% albums.each do |a| %>I don''t know whether it is the problem or a typo in the post, but that should be @albums.each Colin> <%= link_to (a.title, :controller => ''albums'', :action => ''show'', :id > => a.id) %><br /> > <% end %> > > The problem is I can''t share partials between views from other > Controllers. > If I call the partial from the controller Albums everything work as > expected. > If I call it from other Controller, the variable albums is nil. > > I already used :object => @albums, :collections => @albums and locals => > { :albums => @albums } but nothing. > > What is wrong? > > Thanks > -- > Posted via http://www.ruby-forum.com/. > > > >
To render the partial, try: ... <%= render :partial=>''shared/albums'' %> ... Jeff On Oct 8, 2:09 am, Nuno Neves <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Hi, > > I''m learning rails and my first application is a simple gallery that > pulls photos from flickr using flickraw. > > The site has 3 main zones: > > Left: where all albums are listed > Center: where a photo is shown > Bottom: where I have a few thumbnails > > I already build everything but using only one Controller. Now I would > like to separate some actions and have something like this: > > Controllers > > Gallery > - index (main page) > > Albuns > - index (list all photosets) > - show (specific phototset from show/id) > > Photos > - index (list all photos) > - show (specific photo from show/id) > > controllers/albums_controller.rb: > > class AlbumsController < ApplicationController > require ''flickraw'' > @@key = ''123'' > @@user= ''123'' > > def index > @albums = flickr.photosets.getList(:api_key => @@key, :user_id => > @@user) > end > end > > views/albums/index.html.erb > > <% content_for :albums do %> > <%= render ''shared/albums'' %> > <% end %> > > views/shared/_albums.html.erb > > <% albums.each do |a| %> > <%= link_to (a.title, :controller => ''albums'', :action => ''show'', :id > => a.id) %><br /> > <% end %> > > The problem is I can''t share partials between views from other > Controllers. > If I call the partial from the controller Albums everything work as > expected. > If I call it from other Controller, the variable albums is nil. > > I already used :object => @albums, :collections => @albums and locals => > { :albums => @albums } but nothing. > > What is wrong? > > Thanks > -- > Posted viahttp://www.ruby-forum.com/.
Jeff Burlysystems wrote:> To render the partial, try: > > ... > <%= render :partial=>''shared/albums'' %> > ... > > Jeff > > On Oct 8, 2:09�am, Nuno Neves <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>No luck :( Any ideas? -- Posted via http://www.ruby-forum.com/.
2009/10/8 Nuno Neves <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>:> > Jeff Burlysystems wrote: >> To render the partial, try: >> >> ... >> <%= render :partial=>''shared/albums'' %> >> ... >> >> Jeff >> >> On Oct 8, 2:09�am, Nuno Neves <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> > > No luck :( >when you say ''No luck'' do you mean you see nothing in the browser or there is some sort of error? Some things to try if you have not thought of them already: If you see nothing in the browser have a look at the html (View, Page source or similar in browser) and see if there is anything there from the partial. Edit the partial (if necessary) so that it will always display something (just some text maybe) even if the dynamic data that it should show is not getting through, check the html again. Try removing the partial file and make sure that an error is seen, this will check that it is picking up the correct file. Have a look in the log and see if anything useful there. Use ruby-debug to break at various points to check the execution is going where you expect. Colin