Salve a tutti,
sto cercando di fare un piccolo gestionale in rails
il mio problema e’ questo
nella view index di user
ho questo codice
Lista Utenti
<% form_tag :action=>'index' , :method =>'post' do%>
<%= text_field_tag :search %>
<%= submit_tag "cerca" , :user =>nil %>
<% end %>
<% for user in @users %>
<% end %>
<%= user.id %>
|
<%= user.user %>
|
nel model ho creato
class User < ActiveRecord::Base
def self.search(search)
if search
find(:all , :conditions =>["user like ?", "&#{search}"] )
else
find(:all)
end
end
end
nel controller ho definito l'index
def index
@users=User.search(params[:search])
end
se apro la pagina regolarmente http://localohost/user m’indirizza
giustamente nella pagina e tutto funziona ma non appena faccio la provaa
lanciare una ricerca mi dice :
Unknown action
No action responded to create. Actions: index
mi chiedo come mai visto che l’action index esiste ?
potreste aiutarmi
Grazie
fdibenedetto
Il 25 agosto 2010 14:48, Fabio Di benedetto
[email protected] ha scritto:
giustamente nella pagina e tutto funziona ma non appena faccio la provaa
lanciare una ricerca mi dice :
Unknown action
No action responded to create. Actions: index
mi chiedo come mai visto che l’action index esiste ?
Ciao,
quando hai a che fare con controller REST, la differenza tra index e
create non sta nell’url (che è / per entrambi), ma sul method: GET per
index, POST per create.
pietro
innanzi tutto è errato mettere html in
la form è sbagliata perchè alla URL /users/ col metodo POST è già
associata la action ‘create’. controlla da terminale con il comando rake
routes per vedere le rotte già impostate.
infine, il metodo ‘search’ nel modello è un po’ fuori luogo, è meglio
definire quella logica nella action del controller controller, se poi
devi usarlo in più action dello stesso controller, allora crea un metodo
apposito. se devi usarlo in più controllers, allora potresti metterlo in
application_controller.rb, perchè verrà ereditato.
ciao,
A.
Il 25/08/2010 14:48, Fabio Di benedetto ha scritto:
ciao Andrea ma anche se metto il :method=> ‘get’
il risultato nn cambia anche se cambio il nome della action !
<% form_tag :action=>'index' , :method =>"GET" do%>
<%= text_field_tag :search %>
<%= submit_tag "cerca" , :user =>nil %>
<% end %>
ti posto il risultato del rake
dal risultato del rake capisco che se aggiungo :method=> “get” a dovrei
andare in index
DEPRECATION WARNING: Rake tasks in vendor/plugins/ext_scaffold/tasks are
depreca
ted. Use lib/tasks instead. (called from <top (required)> at
C:/Ruby191/lib/ruby
/gems/1.9.1/gems/rails-2.3.8/lib/tasks/rails.rb:10)
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”}
Andrea P. wrote:
innanzi tutto � errato mettere html in
la form � sbagliata perch� alla URL /users/ col metodo POST � gi�
associata la action ‘create’. controlla da terminale con il comando rake
routes per vedere le rotte gi� impostate.
infine, il metodo ‘search’ nel modello � un po’ fuori luogo, � meglio
definire quella logica nella action del controller controller, se poi
devi usarlo in pi� action dello stesso controller, allora crea un metodo
apposito. se devi usarlo in pi� controllers, allora potresti metterlo in
application_controller.rb, perch� verr� ereditato.
ciao,
A.
Il 25/08/2010 14:48, Fabio Di benedetto ha scritto: