Не знаете, как название мой вопрос ...Rails Пользователи, обновляющие информацию в пользовательских маршрутах?
Моя цель в том, что пользователи будут иметь список элементов (и только CURRENT_USER может редактировать этот список)
class Item < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :items
end
У меня есть контроллер Users (Примечание: Я также использую изобрести драгоценный камень, но создали отдельные пользователи контроллера)
class UsersController < ApplicationController
load_and_authorize_resource
def show
@user = User.find(params[:id])
end
def list
@user.items.build
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(
items_attributes: [:user_id, :item, :name, :_destroy]).merge(user_id: current_user.id)
end
end
Сейчас я настроил маршрутизацию
get 'users/:id/list', to: 'users#list', as: :list
Который дает мне это: localhost:3000/users/1/list
Теоретически, это должно быть шоу вид ... где это будет заселить список элементов для идентификатора пользователя: 1.
Я хочу быть в состоянии сделать localhost:3000/list/edit
Таким образом, пользователь может обновить этот список.
Моя форма в Просмотры/пользователи/list.html.erb (Я использую камень кокона для помощи в вложенных формах).
<%= simple_form_for @user do |f| %>
<%= f.simple_fields_for :items do |i| %>
<%= f.text_field :item %>
<%= f.text_field :name %>
<% end%>
<%= link_to_add_association 'add item', f, :items %>
<%= f.button :submit %>
<% end %>
Я знаю, что моя форма в моем list.html.erb, где он будет заполнять все пункты, но я просто делаю это для целей тестирования.
Как обновить форму для сохранения в базе данных объектов и ее связанных с текущим пользователем?
EDIT:
def update
@user = current_user.items.find_by_user_id(current_user.id)
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'Congrats on your successful update!' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Ну, я «Я пытаюсь выяснить, что мое действие обновления и маршрут будут для формы, и когда (или если) его нужно отредактировать, какое это действие будет выглядеть. – hellomello
Добавил маршрут к моему ответу –
Теперь я получаю 'Действие 'update' не удалось найти для UserController'. Я просто копирую из другого действия по обновлению, которое я создал? – hellomello