只要用户名中包含@
符号,我就会收到RoutingError:
No route matches {:controller=>"users", :action=>"show", :username=>"abc@shin.com"}
我的路线如下:
match 'users/:username' => 'users#show', :as => :show_other_user
我的观点:
<% for user in @users %>
<tr>
<td><%= image_tag avatar_url(user, 50) %></td>
<td><%= link_to user.name, show_other_user_path(:username => user.username) %></td>
<td><%= common_friends(current_user, user).size %></td>
</tr>
<% end %>
如果用户名没有@
符号,则一切正常。
答案 0 :(得分:3)
由于@
,您的路线没有因为.
而中断。 Rails会看到.
,并认为您正在尝试指定格式(即.html
,.xml
,...)。您需要通过使用以下内容更新路线来稍微改变自动格式检测的内容:
match 'users/:username' => 'users#show', :as => :show_other_user, :constraints => { :username => /.*/ }
:constraints
应该解决您的路由问题(您对Rails 2使用:requirements
。)