Ruby on Rails - метод Обновления никакой funciona

Estoy teniendo problemas подставляют el metodo Destroy de mi applicación RoR. Teniendo una lista de restaurantes, y queriendo modificar uno de ellos pulsando en Edit, жабы mis entradas сын modificadas cuando соло quisiera modificar la seleccionada.

Он aquí ми código:

Контроллер:

class RestaurantsController < ApplicationController

  before_action :set_restaurant, only: [:show, :edit, :update, :destroy]

  def index
    @restaurants = Restaurant.all
  end

  def show

  end

  def new
    @restaurant = Restaurant.new
  end

  def create
    Restaurant.create(restaurant_params)
    redirect_to restaurants_path
  end

  def edit

  end

  def update
    Restaurant.update(restaurant_params)
    # raise
    redirect_to restaurants_path
  end

  def destroy
    @restaurant.destroy
    redirect_to restaurants_path
  end
end

private

def set_restaurant
  @restaurant = Restaurant.find(params[:id])
end

def restaurant_params
  params.require(:restaurant).permit(:name, :address, :stars)
end

Маршруты:

         Prefix Verb   URI Pattern                     Controller#Action
    restaurants GET    /restaurants(.:format)          restaurants#index
                POST   /restaurants(.:format)          restaurants#create
 new_restaurant GET    /restaurants/new(.:format)      restaurants#new
edit_restaurant GET    /restaurants/:id/edit(.:format) restaurants#edit
     restaurant GET    /restaurants/:id(.:format)      restaurants#show
                PATCH  /restaurants/:id(.:format)      restaurants#update
                PUT    /restaurants/:id(.:format)      restaurants#update
                DELETE /restaurants/:id(.:format)      restaurants#destroy

Index.html.erb:

<h3>Liste des restaurants</h3>

<h3><%= link_to "Create a new restaurant", new_restaurant_path %></h3>

<% @restaurants.each do |restaurant| %>

<h2>--------------------------------------------------------------</h2>

  <h3>Name: <%= restaurant.name %></h3>
  <h3>Stars: <%= restaurant.stars %></h3>
  <h3>Address: <%= restaurant.address %></h3>
  <h3><%= link_to "See", restaurant_path(restaurant) %></h3>
  <h3><%= link_to "Edit", edit_restaurant_path(restaurant) %></h3>
  <h3><%= link_to "Delete", restaurant_path(restaurant), method: :delete, data: { confirm: "Are you sure?" } %></h3>
<% end %>
1
задан 18.01.2017, 02:19
0 ответов

То, что ты называешь, является Restaurant.update (restaurant_params) это производит query update ко всем твоим реестрам этой таблицы.

Ты должен менять твой метод update следующего способа:

def update
  if @restaurant.update(restaurant_params)
    redirect_to restaurants_path
  else
    render :edit
  end
end
4
ответ дан 03.12.2019, 17:39
  • 1
    Если, я это увидел. Большое спасибо. –  20.01.2017, 12:20
  • 2
    Мой ответ - правильный? –  21.01.2017, 00:54
  • 3
    @mrngview, когда у тебя будет правильный ответ пожалуйста, не забывай пометить ее для того, чтобы он служил во все сообщество и как благодарность в quié n он отвечает тебе. Привет, –  08.07.2017, 17:24