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
<head>
<h2 align="center"> Lista Utenti </h2>
<div id ="cerca">
<% form_tag :action=>'index' , :method =>'post' do%>
<%= text_field_tag :search %>
<%= submit_tag "cerca" , :user =>nil %>
<% end %>
</div>
</head>
<table cellpadding="3" cellspacing="0">
<% for user in @users %>
<tr>
<td width="50%">
<%= user.id %>
</td>
<td width="50%">
<%= user.user %>
</td>
<% end %>
</tr>
</table>
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
on 2010-08-25 14:48
on 2010-08-25 14:54
Il 25 agosto 2010 14:48, Fabio Di benedetto <f_dibenedetto72@hotmail.com> 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
on 2010-08-25 15:04
innanzi tutto è errato mettere html in <head> 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:
on 2010-08-25 18:31
ciao Andrea ma anche se metto il :method=> 'get'
il risultato nn cambia anche se cambio il nome della action !
<div id ="cerca">
<% form_tag :action=>'index' , :method =>"GET" do%>
<%= text_field_tag :search %>
<%= submit_tag "cerca" , :user =>nil %>
<% end %>
</div>
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 Pavoni wrote:
> innanzi tutto � errato mettere html in <head>
>
> 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:
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.