Wykorzystanie partial do dwoch akcji [edit,new]

http://localhost:3000/users/8/albums/new. Url odwoluje sie do akcji new do ktorej musze dostarczyc user_id i @album

http://localhost:3000/albums/40/edit. Url odwoluje sie do akcji edit do ktorej musze dostarczyc jedynie @album

Partial1 :action => new

[code=ruby]<% form_for [current_user,@album] do |f| %>
<%= f.error_messages %>

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

<%= f.submit %>

<% end %>[/code] Partial2 :action => edit [code=ruby]<% form_for @album do |f| %> <%= f.error_messages %>

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

<%= f.submit %>

<% end %>[/code] Jak widac formularze sa bardzo podobne jedyna roznica jest w pierwszej linijce. Jezeli sproboj przekazac drugi parametr w formularzu dla akcji edit otrzymuje [code]undefined method `fixnum_album_path'[/code] Czy moge w jakis sposob uzyc tylko jednego z nich dla tych dwoch akcji ?
 form_for( @album.new? ? [current_user, @album] : @album )

A najlepiej by było gdybyś zrobił tak, że oba wymagają tego samego parametru

[quote=paneq] form_for( @album.new? ? [current_user, @album] : @album )
A najlepiej by było gdybyś zrobił tak, że oba wymagają tego samego parametru[/quote]
Kiedy przesylam dwa parametry to ta sciezka wyrzuca wyjatek edit_album GET /albums/:id/edit(.:format) {:controller=>“albums”, :action=>“edit”}. W jaki sposob moge zmusic ja do przyjacia dwoch parametrow ?

http://www.ruby-forum.com/topic/206593 ktos mial taki sam problem jak ja

root / {:controller=>"albums", :action=>"index"} delete_multiple_album_photos POST /albums/:album_id/photos/delete_multiple(.:format) {:controller=>"photos", :action=>"delete_multiple"} album_photos GET /albums/:album_id/photos(.:format) {:controller=>"photos", :action=>"index"} POST /albums/:album_id/photos(.:format) {:controller=>"photos", :action=>"create"} new_album_photo GET /albums/:album_id/photos/new(.:format) {:controller=>"photos", :action=>"new"} edit_photo GET /photos/:id/edit(.:format) {:controller=>"photos", :action=>"edit"} photo GET /photos/:id(.:format) {:controller=>"photos", :action=>"show"} PUT /photos/:id(.:format) {:controller=>"photos", :action=>"update"} DELETE /photos/:id(.:format) {:controller=>"photos", :action=>"destroy"} delete_multiple_user_albums POST /users/:user_id/albums/delete_multiple(.:format) {:controller=>"albums", :action=>"delete_multiple"} user_albums GET /users/:user_id/albums(.:format) {:controller=>"albums", :action=>"index"} POST /users/:user_id/albums(.:format) {:controller=>"albums", :action=>"create"} new_user_album GET /users/:user_id/albums/new(.:format) {:controller=>"albums", :action=>"new"} edit_album GET /albums/:id/edit(.:format) {:controller=>"albums", :action=>"edit"} album GET /albums/:id(.:format) {:controller=>"albums", :action=>"show"} PUT /albums/:id(.:format) {:controller=>"albums", :action=>"update"} DELETE /albums/:id(.:format) {:controller=>"albums", :action=>"destroy"} users GET /users(.:format) {:controller=>"users", :action=>"index"} POST /users(.:format) {:controller=>"users", :action=>"create"} new_user GET /users/new(.:format) {:controller=>"users", :action=>"new"} edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"} user GET /users/:id(.:format) {:controller=>"users", :action=>"show"} PUT /users/:id(.:format) {:controller=>"users", :action=>"update"} DELETE /users/:id(.:format) {:controller=>"users", :action=>"destroy"}

Nie lepiej w partialu trzymać tylko pola, a form_for trzymać w widoku odpowiednio akcji new i edit?

A jaka to wersja Railsów, jak wyglądają routsy (jak w linku?). Jak się chce to można z ręki pobabrać się z wszystkimi routami i je napisać zamiast użyć resources.

Ze tez sam na to nie wpadlem dzieki :slight_smile:

Rails : 2.3.8

map.root :controller => "albums" map.resources :users, :shallow => true do |user| user.resources :albums,:collection => {:delete_multiple => :post} do |album| album.resources :photos, :collection => { :delete_multiple => :post} end end map.login "login", :controller => "user_sessions", :action => "new" map.logout "logout", :controller => "user_sessions", :action => "destroy" map.resources :user_sessions