Strange (for me) Scaffold source code generated

Hello :slight_smile:

I generated model, view and controler for products database table
using scaffold

I try to change controler name from product to admin but I can’t :frowning: (I
didn’t know how to specifi diferent controler name when use scaffold)

I controllers/s_controller.rb to controllers/admin_controller.rb
view/products directory to view admin directory
layout/products.html.erb to layout/admin.html.erb
and make some modifications

but i can’t do it because there are some strange thinks

view\products\index.html

<%= link_to ‘Show’, product %>
<%= link_to ‘Edit’, edit_product_path(product) %>
<%= link_to ‘Destroy’, product, :confirm => ‘Are you
sure?’, :method => :delete %>

what are these edit_product_path functions? And why edit link is
something like

Edit
and not
Edit

when i try to make /admin/1/edit request I get an error that I have
not action 1, it works only with /admin/edit/1

in products controler it works both ways:
/products/1/edit
and
/products/edit/1/

Can you help me, pls :slight_smile:

If I have to short my question it is:

view/products/index.html.erb

Listing products

<% for product in @products %>

<% end %>
Title Description Image url
<%=h product.title %> <%=h product.description %> <%=h product.image_url %> <%= link_to 'Show', product %> <%= link_to 'Edit', edit_product_path(product) %> <%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %>

<%= link_to ‘New product’, new_product_path %>

what is this function edit_product_path and why the result is
/1/edit and not /edit/1

And why both work?

???

On 25 Nov 2008, at 10:11, Ju Lian wrote:

<%= link_to ‘New product’, new_product_path %>

what is this function edit_product_path and why the result is
/1/edit and not /edit/1

Short answer: restful routing. When you declare a route for products
in routes.rb this add a bunch of named routes, so new_product_path is
the url which gives you the path where the new product form is,
edit_product_path(some_product) is the url for editing some_product
etc…

And why both work?

because you still have the old controller/action/id routes in your
routes.rb file

Frederick C. wrote:

On 25 Nov 2008, at 10:11, Ju Lian wrote:

<%= link_to ‘New product’, new_product_path %>

what is this function edit_product_path and why the result is
/1/edit and not /edit/1

Short answer: restful routing. When you declare a route for products
in routes.rb this add a bunch of named routes, so new_product_path is
the url which gives you the path where the new product form is,
edit_product_path(some_product) is the url for editing some_product
etc…

And why both work?

because you still have the old controller/action/id routes in your
routes.rb file

Thank you very much :slight_smile:

Now I understand that I have to learn this:
http://guides.rubyonrails.org/routing_outside_in.html

May be this is the right way (it works)

=============
=== routes.rb

map.resources :products, :as => ‘admin’

Ju Lian wrote:

Frederick C. wrote:

On 25 Nov 2008, at 10:11, Ju Lian wrote:

<%= link_to ‘New product’, new_product_path %>

what is this function edit_product_path and why the result is
/1/edit and not /edit/1

Short answer: restful routing. When you declare a route for products
in routes.rb this add a bunch of named routes, so new_product_path is
the url which gives you the path where the new product form is,
edit_product_path(some_product) is the url for editing some_product
etc…

And why both work?

because you still have the old controller/action/id routes in your
routes.rb file

Thank you very much :slight_smile:

Now I understand that I have to learn this:
http://guides.rubyonrails.org/routing_outside_in.html

I still can’t change controller name from products to admin

=============
=== routes.rb

ActionController::Routing::Routes.draw do |map|
map.resources :products
map.resources :admin

map.connect ‘:controller/:action/:id’

map.connect ‘:controller/:action/:id.:format’

end

May be controler name must be ‘admins’ ?

Some of helpers functions doesn’t work for me :frowning:

=================================
=== /view/products/index.hmtl.erb

<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', 

:method => :delete %>

<%= link_to ‘New product’, new_product_path %>

become:

=== /view/admin/index.hmtl.erb

<td><%= link_to 'Show', admin_path(:id => product.id) %></td>
<td><%= link_to 'Edit', edit_admin_path(:id => product.id) %></td>
<td><%= link_to 'Destroy', admin_path(:id => product.id), :confirm 

=> ‘Are you sure?’, :method => :delete %>

<%= link_to ‘New product’, new_admin_path %>

=================================
=== /view/products/new.hmtl.erb

New product

<% form_for(@product) do |f| %>
<%= f.error_messages %>

<%= f.label :title %>
<%= f.text_field :title %>

<%= f.label :description %>
<%= f.text_area :description %>

<%= f.label :image_url %>
<%= f.text_field :image_url %>

<%= f.submit "Create" %>

<% end %>

<%= link_to ‘Back’, products_path %>

=================================
=== /view/admin/new.hmtl.erb

New product

<% form_for(@product) do |f| %>
<%= f.error_messages %>

<%= f.label :title %>
<%= f.text_field :title %>

<%= f.label :description %>
<%= f.text_area :description %>

<%= f.label :image_url %>
<%= f.text_field :image_url %>

<%= f.submit "Create" %>

<% end %>

<%= link_to ‘Back’, admin_path %>

1-st The form submits to product controller instead of new admin
controller
2-nd admin_path or admins_path in the last row give me an error

:slight_smile: What I am doing wrong?

Is there some reason not to change controller name from products to
admin?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs