Я хотел бы обновить данные без формы.Rails: обновить данные через link_to (без представления)
Хотя есть похожие вопросы, они не работают для меня.
Update field through link_to in Rails
То, что я хотел бы сделать, это удалить данные, как следующие;
Например, удалите name
и address
при удалении ссылки.
id | name | address | ...
12 | aaa | bbb | ...
в
id | name | address | ...
12 | | | ...
Хотя я попробовал некоторые, была показана ошибка. (Например ActionController::RoutingError
)
схема
create_table "rooms", force: :cascade do |t|
t.string "name"
t.text "address"
...
модель
schedule.rb
class Schedule < ActiveRecord::Base
belongs_to :user
has_many :rooms, inverse_of: :schedule, dependent: :destroy
accepts_nested_attributes_for :rooms, allow_destroy: true
...
room.rb
class Room < ActiveRecord::Base
belongs_to :schedule, inverse_of: :rooms
default_scope -> { order(day: :asc) }
...
вид
Я хотел бы добавить ссылку в schedules/_schedule.html.erb
Он имеет следующее;
...
<% schedule.rooms.each do |room| %>
...
<% if room.name.present? %>
<%= link_to "Delete", rooms_path(room, room:{address: nil}) , method: :put, data: { confirm: "You sure?"} %>
...
Я также попробовал другой код, как показано ниже, но они не работают.
<%= link_to "Delete", rooms_path(room:{address: nil}) , method: :put, data: { confirm: "You sure?"} %>
<%= link_to "Delete", rooms_path(room) , method: :put, params: {address: nil}, data: { confirm: "You sure?"} %>
и так далее.
routes.rb
...
resources :schedules do
resources :events
end
resources :schedules do
resources :rooms
end
resources :rooms do
resources :events
end
...
rooms_controller.rb
...
def edit
#nothing
end
def update
@room = Room.find(params[:id])
if @room.update(room_params)
flash[:success] = "Room updated!"
redirect_to itinerary_path(@room.itinerary) || current_user
else
render 'edit'
end
end
def destroy
@room = Room.find(params[:id])
@room.destroy
flash[:success] = "Room deleted"
redirect_to schedule_path(@room.schedule) || current_user
end
private
def room_params
params.require(:room).permit(
:id, :_destroy, :name, :address, :schedule_id, :day)
end
...
Было бы понятно, если бы вы могли дать мне какие-либо предложения.
разместить свои маршруты .. –
Спасибо за быстрый ответ, @Gokul М.Я добавляю маршруты в нижней части моего вопроса. – SamuraiBlue