makoto kuwata
2010-Apr-16 07:02 UTC
Allow ''.'' to be a part of identifier, not a separator of format
Hi,
I have a question about available characters for url in Rails3.
Is it possible to include ''.'' as identifier of resources?
Background
----------
I want to use title name as identifier instead of id in url path, for
example:
http://localhost:3000/movies/Avatar
And I want to allow ''.'' to appear in url, such as:
http://localhost:3000/movies/Avatar2.0
But it raises ActionController::RoutingError exception.
What I did
----------
$ rails --version
Rails 3.0.0.beta2
$ rails g scaffold Movie title:string description:string
$ rake db:migrate
$ vi app/models/movie.rb
$ cat app/models/movie.rb
class Movie < ActiveRecord::Base
def to_param
title
end
end
$ rails c
irb> Movie.create(:title=>"Avatar", :description=>"3D
Movie")
I accessed to http://localhost:3000/movies/Avator and page is shown
correctly.
But when I create another movie with title ''Avator2.0'',
it causes ActionController::RoutingError.
> ActionController::RoutingError in Movies#index
>
> Showing /Users/kwatch/space/rails/myapp4/app/views/movies/index.html.erb
where line #16 raised:
>
> No route matches {:controller=>"movies",
:action=>"destroy", :id=>#<Movie id: 2, title:
"Avator2.0", description: "Web 2.0 movie", created_at:
"2010-04-16 06:16:39", updated_at: "2010-04-16
06:50:31">}
I guess that ''.'' may cause the error, but I want to allow to
use ''.''
in url.
Is it possible to use ''.'' in url?
Environment
-----------
$ ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
$ rails --version
Rails 3.0.0.beta2
$ uname -a
Darwin spica.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26
11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
--
regards,
makoto kuwata
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Jeff Lewis
2010-Apr-17 15:15 UTC
Re: Allow ''.'' to be a part of identifier, not a separator of format
In your ./config/routes.rb, you could do something like:
...
map.connect ''/movies/:title'',
:controller=>''movies'',
:action=>''by_title'',
:requirements=>{:title=>/[-_+.a-z0-9]+/i}
...
See Regular Expressions and Parameters on
http://api.rubyonrails.org/classes/ActionController/Routing.html for
more info.
Jeff
On Apr 16, 12:02 am, makoto kuwata
<kwa...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hi,
>
> I have a question about available characters for url in Rails3.
> Is it possible to include ''.'' as identifier of resources?
>
> Background
> ----------
>
> I want to use title name as identifier instead of id in url path, for
> example:
>
> http://localhost:3000/movies/Avatar
>
> And I want to allow ''.'' to appear in url, such as:
>
> http://localhost:3000/movies/Avatar2.0
>
> But it raises ActionController::RoutingError exception.
>
> What I did
> ----------
>
> $ rails --version
> Rails 3.0.0.beta2
> $ rails g scaffold Movie title:string description:string
> $ rake db:migrate
> $ vi app/models/movie.rb
> $ cat app/models/movie.rb
> class Movie < ActiveRecord::Base
> def to_param
> title
> end
> end
> $ rails c
> irb> Movie.create(:title=>"Avatar",
:description=>"3D Movie")
>
> I accessed tohttp://localhost:3000/movies/Avatorand page is shown
> correctly.
>
> But when I create another movie with title ''Avator2.0'',
> it causes ActionController::RoutingError.
>
> > ActionController::RoutingError in Movies#index
>
> > Showing
/Users/kwatch/space/rails/myapp4/app/views/movies/index.html.erb where line #16
raised:
>
> > No route matches {:controller=>"movies",
:action=>"destroy", :id=>#<Movie id: 2, title:
"Avator2.0", description: "Web 2.0 movie", created_at:
"2010-04-16 06:16:39", updated_at: "2010-04-16
06:50:31">}
>
> I guess that ''.'' may cause the error, but I want to allow
to use ''.''
> in url.
> Is it possible to use ''.'' in url?
>
> Environment
> -----------
>
> $ ruby --version
> ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
> $ rails --version
> Rails 3.0.0.beta2
> $ uname -a
> Darwin spica.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26
> 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
>
> --
> regards,
> makoto kuwata
>
> --
> You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.