Click isn’t one of the REST states, so you will have to add that to your
routes. In Rails 2.3, this looks like this:
map.resources :posts, :member => { :click => :get }
In Rails 3, you would do:
resources :posts do
member do
get ‘click’
end
end
I have rails 3.0.7.Added a route as above but still line "<%=
button_to “New”, :action => “click” %>" generate the error .
“No route matches {:controller=>“posts”, :action=>“click”}”
That is the result of following advice without understanding that
advice. The above syntax is explained in section 2.9.1 of the rails
guide on routing and expects an id to be passed, which is not what you
want.
As has been stated several times you can use rake routes to see what
routes you have declared, and you will see that posts/click is not one
of them.
rake routes gave and following and it seems posts/click is there.
posts_index GET /posts/index(.:format) {:action=>“index”, :controller=>“posts”}
click_post GET /posts/:id/click(.:format) {:action=>“click”, :controller=>“posts”}
posts GET /posts(.:format) {:action=>“index”, :controller=>“posts”}
POST /posts(.:format) {:action=>“create”, :controller=>“posts”}
new_post GET /posts/new(.:format) {:action=>“new”, :controller=>“posts”}
edit_post GET /posts/:id/edit(.:format) {:action=>“edit”, :controller=>“posts”}
post GET /posts/:id(.:format) {:action=>“show”, :controller=>“posts”}
PUT /posts/:id(.:format) {:action=>“update”, :controller=>“posts”}
DELETE /posts/:id(.:format) {:action=>“destroy”, :controller=>“posts”}
If you just want a static route (which I think you do) then have a
look at section 3.3
match ‘:posts/:click’ didn’t work as per tutorial there.
This time make sure that rake routes shows the result you expect. If
you still cannot get it to work post what you have tried and what you
see in rake routes.
I just want a simple button at click which will show the Hello message in /app/views/posts/click.html.erb
John