Я добавляю в пользовательские настройки в моем приложении Ruby on Rails, и то, что я пытаюсь сделать сейчас, это сделать так, чтобы пользователь мог редактировать только их предпочтения, поэтому не создавайте новый или не просматривайте список всех предпочтений. Это требует нового предпочтения, когда новый пользователь создается с идентификатором из таблицы пользователей, отображаемым в столбце user_id в таблице настроек.Ruby on Rails Пользователь может редактировать только предпочтение, не видеть список или создавать новые
Это схема:
create_table "perferences", force: :cascade do |t|
t.integer "user_id"
t.integer "category_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "colour"
end
create_table "users", force: :cascade do |t|
t.string "password_digest"
t.string "role"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "first_name"
t.string "last_name"
t.string "house_no"
t.string "street"
t.string "town"
t.string "postcode"
t.string "email"
t.date "date_of_birth"
end
Users_controller:
def create
@user = User.new(user_params)
if @user.save
# login is achieved by saving a user's 'id' in a session variable,
# accessible to all pages
session[:user_id] = @user.id
UserMailer.welcome_email(@user).deliver_now
redirect_to films_path
else
render action: "new"
end
end
И мой routes.rb:
resources :perferences
resources :prices
# get 'perferences/index', post: 'perferences#new'
# post 'perferences/index', to: 'perferences#new'
# match 'perferences' => 'perferences#create', :via => [:post]
post 'reviews/new/:id', to: 'reviews#new'
get 'reviews/new/:id', to: 'reviews#new'
#resources :showings
get 'sessions/new'
get 'sessions/create'
get 'sessions/destroy'
controller :sessions do
get 'login' => :new
post 'login' => :create
get 'logout' => :destroy
end
#post 'films/search', to: 'films#search'
get 'films/index'
get 'categories/index'
get 'certificates/index'
root 'films#index'
post 'films/search', to: 'films#search'
post 'films/search_1', to: 'films#search_1'
post 'films/search_2', to: 'films#search_2'
post 'films/search_3', to: 'films#search_3'
post 'films/search_4', to: 'films#search_4'
post 'films/search_5', to: 'films#search_5'
post 'films/search_6', to: 'films#search_6'
post 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
get 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
post 'seats/display_seats_by_screen', :to => 'seats#display_seats_by_screen'
get 'seats/display_seats_by_screen', :to => 'seats#display_seats_by_screen'
post 'screens/display_screens_by_showing', :to => 'screens#display_screens_by_showing'
get 'screens/display_screens_by_showing', :to => 'screens#display_screens_by_showing'
post 'films/multi_find', :to => 'films#multi_find'
get 'films/multi_find', :to => 'films#multi_find'
post 'seats/multi_find', :to => 'seats#multi_find'
get 'seats/multi_find', :to => 'seats#multi_find'
post 'screens/multi_find', :to => 'screens#multi_find'
get 'screens/multi_find', :to => 'screens#multi_find'
resources :users
resources :films
resources :categories
resources :certificates
resources :showings
resources :bookings
resources :seats
resources :screens
resources :reviews
resources :films do
resources :showings
end
resources :showings do
resources :seats
end
match '*a', to: 'errors#routing', via: [:get, :post]
Обратите внимание на закомментированы линии в маршрутах, что у меня есть попытался получить его так, чтобы вместо перехода на страницу указаний/индексов пользователь был отправлен на страницу perferences/edit где они редактируют свои собственные данные.
Чтобы выяснить, что мне нужно сделать:
- Сделать так, чтобы пользователь не может перейти к perferences/индекс или perferences/новую страницу, но отправляются на страницу perferences/редактирования, где они редактировать свои существующие предпочтения
- Создать новое предпочтение, когда новый пользователь создаются так, что они отдают предпочтение редактировать, даже если он не имеет ничего, но их до сих пор user_id
Может кто-то пожалуйста, помогите. Контроллер
Я только что попробовал это, у вас есть работа, так что новое добавление добавляется, когда пользователь создается (спасибо), но маршрутизация не работает, но все же позволяет перейти к указателям/индексу page –
Вы прокомментировали 'resource: preferences', как я показал вам в разделе« Маршруты »? – Nermin
Спасибо! Не видел этого! Итак, теперь пользователь не может перейти на индексную страницу или добавить новое предпочтение, но как я могу сделать это, чтобы ссылка на домашней странице сайта (которая представляет собой views/layouts/application.html.erb) относится к предпочтению редактировать страницу с идентификатором пользователя?Это строка кода, которую я пробовал: '<% = link_to" Мои настройки ", edit_perference_path (@perference)%>', но я получаю ошибку: 'undefined method 'edit_perference_path'' –