Я получаю эту ошибку при попытке создать страницу с подробными сведениями о комнате. Нажатие на редактирование вызовет всплывающее окно с предварительно заполненными значениями выбранной комнаты. И нажав сохранить в окне обновит данные для этой записи.
Я не совсем уверен, как заранее определить идентификатор, в настоящее время я использую jQuery для заполнения формы текущими данными выбранных записей.
No route matches {:action=>"save_details", :controller=>"rooms"}, missing required keys: [:id]
Номера / index.html.erb
<%= form_for(@room, url: save_details_room_path) do |f| %>
<% f.text_field :id, id:'edit-room-id', class:'d-none' %>
<% f.text_field :name, id:'edit-room-name' %>
<% f.text_area :desc, id:'edit-room-desc', style:'width: 90%; height: 8em; resize: none; float: bottom' %>
<%= f.submit 'Save', :class=>'btn btn-primary' %>
<% end %>
rooms_controller.rb
def save_details
logger.info ('Hello world')
@room= Room.find(params[:id])
@room.name = params[:name]
@room.description = params[:desc]
@room.save
redirect_to rooms_url
end
def show
@room = Room.find(prams[:id])
end
def index
@room = Room.all
end
routes.rb
resources :rooms do
get :save_details, on: :member
end
main.js
const name = $(this).data('name');
const desc = $(this).data('description');
const id = $(this).data('id');
$('#edit-room-id').val(id);
$('#edit-room-name').val(name);
$('#edit-room-desc').val(desc);
1-е РЕДАКТИРОВАНИЕ:
Теперь я делаю это другим способом, который заключается в простом прохождении формы через URL, например. / Комнаты / save_details? ID = 1, имя = 123, убывание = 1234. Однако форма просто направляет его в стандартные методы show / index в моем контроллере. В любом случае, чтобы направить его напрямую в метод save_details? Выполнение ниже просто возвращает ошибку, которая говорит, что save_details не существует как идентификатор. Также отредактировал мои маршруты
новые маршруты.рб
get '/rooms/save_details/:id/:name/:desc' => 'rooms#save_details', :as => 'save_details'
index.html.erb
<form action="rooms/save_details" method="get">
....
</form>