Forum: Ruby on Rails Passing aariable from controller to a different view ????

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
428f1d76da99d9602d57b046841df29a?d=identicon&s=25 Dave Smith (railsnoob)
on 2008-12-22 14:23
Hi Guys,

I am still very new to this rails stuff so I'm looking for some help. I
have a login controller which authenticates a person and redirects them
to the projects page, here is a snippet of code.

======================================================================
if request.post?
          person = Person.authenticate(params[:email_address],
params[:password])
          if person
            session["user_id"] = person.id
            if person.type == "Customer"
              flash[:notice] = "You have successfully logged in"
              redirect_to(:controller => "projects", :action => "index"
)
            end
          else
            redirect_to :action => "login"
            flash[:notice] = "Invalid user/password combination"
          end
        end
======================================================================

I have a projects controller which has a field company_id (as a project
belongs to a company). I also have a people table which holds the
customers (as well as admins based on person.type).

I want to be able to redirect the person to the projects table and have
the projects displayed only for that user.

In the customer model I have specified  belongs_to :company.
In the project model I have also specified  belongs_to :company.
In the company model I have specified  has_many :projects.

Somehow I need to get the person logging in from the login controller
and transfer that to company controller and then pass that to the the
projects controller to use in the project view.

But I have really stuck on how to do this!

Please can someone help!

Regards,

Dave
9a2a53db8e9b4476038c94a64b32833f?d=identicon&s=25 Ryan Bigg (ryan-bigg)
on 2008-12-22 14:54
(Received via mailing list)
Use restful authentication (or a similar plugin) for tracking that
kind of stuff: http://github.com/technoweenie/restful_authentication
-----
Ryan Bigg
Freelancer
http://frozenplague.net
428f1d76da99d9602d57b046841df29a?d=identicon&s=25 Dave Smith (railsnoob)
on 2008-12-22 15:49
Ryan Bigg wrote:
> Use restful authentication (or a similar plugin) for tracking that
> kind of stuff: http://github.com/technoweenie/restful_authentication
> -----
> Ryan Bigg
> Freelancer
> http://frozenplague.net

Couldnt I just do the following... in my projects controller?


before_filter :find_projects

def index
  #  @projects = Project.find(:all)
  #  @project_company = @projects.company_id
    @projects = @results.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @projects }
    end
  end

def find_projects
    @user_in = Person.find_by_id(session["user_id"])
    @company = Company.find_by_id(@user_in.company_id)
    @results = Company.find(@company.id).projects # Find all projects
that belong to company
  end
This topic is locked and can not be replied to.