我是Ruby和Rails的新手,这是一个我无法自行解决的问题:
我正在一个现有网站上运行,并在较旧版本的Rails和Ruby 1.9.3上运行。
我正在尝试更改某个用户的详细信息,但是有时在链接中我不会得到http://127.0.0.1:3000/users/firstname.lastname而是http://127.0.0.1:3000/users?id=firstname.lastname。
这是我拥有的链接的代码:
<li><%= link_to "Remove this user", user_path(@person[:uid]), :confirm => 'Are you sure you want to delete ' + @person[:uid] + '?',:method => :delete ,:title => "Delete user from LDAP" %></li>
<li><%= link_to "Edit this user", edit_userdetails_path(id:@username[:UserID]) %></li>
<li><%= link_to "Add to group", group_path %></li>
<li><%= link_to "Change password", change_pwd_path(@person[:uid]) %></li>
第一个和第三个链接按应有的方式工作,第二个和第四个链接具有url中的?id =描述的行为。
这是我的路线文件中的内容:
resources :posts
resources :timesheets
resources :personal_bugs, :only => [:new, :create, :destroy]
resources :sessions, :only => [:new, :create, :destroy]
resources :passwords, :only => [:new, :create]
resources :users, :constraints => { :id => /[0-9A-Za-z\-\.]+/ }
resources :computers
resources :userdetails, :constraints => { :id => /[0-9A-Za-z\-\.]+/ }
resources :bz2refs, :only => [:index, :update]
resources :bz2ref_activities
resources :sessions do
collection do
get :reset_password
get :recovery
end
结束
resources:bz2ref_resources做 收集做 得到:删除 得到:还原 结束 结束
get "userdetails" => "userdetails#index", :as => "userdetails"
get "edit_userdetails" => "userdetails#edit", :as => "edit_userdetails"
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "change_pwd" => "passwords#new", :as => "change_pwd"
post "search" => "pages#search", :as => "search"
get "search" => "pages#search", :as => "search"
get "help" => "pages#help", :as => "help"
get "admin_urls" => "pages#admin_urls", :as => "admin_urls"
get "report" => "timesheets#report", :as => "report"
post "report" => "timesheets#report", :as => "report"
get "incomplete" => "timesheets#incomplete", :as => "incomplete"
post "incomplete" => "timesheets#incomplete", :as => "incomplete"
get "check" => "timesheets#check", :as => "check"
post "check" => "timesheets#check", :as => "check"
get "export" => "timesheets#export", :as => "export"
get "group" => "users#group", :as => "group"
get "group_show" => "users#group_show", :as => "group_show"
post "group_add" => "users#group_add", :as => "group_add"
get "computer_wake" => "computers#wake", :as => "computer_wake"
get "mirror_users" => "users#mirror", :as => "mirror_users"
get "kiosk" => "posts#latest", :as=> "kiosk"
get "lookupbug" => "timesheets#lookupbug", :as =>"lookupbug"
我从用户处调用userdetails控制器,然后在编辑后我要从userdetails->用户返回。
答案 0 :(得分:0)
这是因为您在路径中输入了id
参数。
例如:
user_path(@person[:uid]) => localhost/users/firstname.lastname
user_path(id: @person[:uid]) => localhost/users?id=firstname.lastname
要修复第二个链接,您需要从edit_userdetails_path(id:@username[:UserID])
更改为edit_userdetails_path(@username[:UserID])
,而无需使用id
。
答案 1 :(得分:0)
我通过以下方式创建超链接解决了该问题:
<li><%= link_to "Edit this user", controller: "userdetails", action: "edit", id: @username[:UserID] %></li>
这样工作!