Jason
Jason

Reputation: 5

Web app design questions - RoR 3

This is my first web app that i am developing and i have some design questions, i have a few book about RoR3 but i dont seem to find answers to my questions. My application is based on Ruby on rails 3

I am not looking for detailed answers here, if you can just point me to a topic name that i could learn about that can answer my qustions, such as "names resources" , "hidden fields" .....

My questions: 1- How to send information between View A and controller B. Example, i am on the View for "Company" when i click create employee i am calling the "new view" for the employee so i am now on a different view, how can i pass to the new employee action the ID of the company? Since i am now on a different view ? i don’t want to use nested resources What are the different ways to send information across different controllers/views

2- ruby URLs: i can view am item in my model via the URL: http://localhost:3000/Companies/1 I don’t want the url to contain the index of the item, each company has a name and i want to display this name in the url such as http://localhost:3000/Companies/myCompany How can i change the url structure of rails?

Upvotes: 0

Views: 120

Answers (2)

Chakreshwar Sharma
Chakreshwar Sharma

Reputation: 2610

  1. Pass the company id as parameters at create employee link .

In the controller ,receive the params like def new company_id = params[:company_id] .... end

  1. For using some string instead of id , use gem 'friendly_id' Make sure your reference string should be unique.

Upvotes: 0

David
David

Reputation: 7303

For your first question, you can pass the parameters with the link (assuming you have employee and company variables accessible to your view):

Edit: this should work:

= link_to "create employee", :controller => "employees", :action => "new", :company_id => @company.id 

And in the Employees controller:

def new
  company_id = params[:company_id]
  # check that company_id is not nil before doing stuff with it
end

I'm not sure why doing this ignores any extra parameters:

= link_to "create employee", new_employee_path, :company_id => @company.id

For your second question, this is what you're looking for.

Upvotes: 1

Related Questions