Ruby on Rails: проблема связи между страницами - PullRequest
0 голосов
/ 20 декабря 2018

Я довольно новичок в 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>

Первая и третья ссылки работают так, как должны, 2-я и 4-я ссылки ведут себя так, как описано с? Id = в URL.

Это то, что находится в моем файле маршрутов:

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

end

resources: bz2ref_resources do collection действительно получает: remove get: restore end end

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 -> users.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Я решил проблему, создав гиперссылку следующим образом:

<li><%= link_to "Edit this user", controller: "userdetails", action: "edit", id: @username[:UserID] %></li>

Таким образом, она работает!

0 голосов
/ 20 декабря 2018

Это потому, что вы задаете параметр 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...