Хорошо, я довольно новичок в этом рельсовом материале, поэтому, пожалуйста, потерпите меня ...
Я пытаюсь сделать самое простое приложение из всех, рождественский список, и мне нужно немного помочь. Позвольте мне заполнить вас:
Я строил человека и предмет. Я немного изменил свои модели, и вот как они выглядят.
class Person < ActiveRecord::Base
has_many :item, :dependent => :destroy
end
class Item < ActiveRecord::Base
belongs_to :person
end
class CreateItems < ActiveRecord::Migration
def change
create_table :items do |t|
t.integer :person_id
t.string :description
t.timestamps
end
end
end
class CreatePeople < ActiveRecord::Migration
def change
create_table :people do |t|
t.string :name
t.timestamps
end
end
end
Похоже, это все круто. Действие index для people_controller перечисляет всех людей (duh)
<% @people.each do |person| %>
<tr>
<td><%= link_to person.name, "/people/#{person.id}" %></td>
</tr>
<% end %>
и когда вы нажимаете на него, он вызывает действие show (тот же контроллер), который получает все элементы для этого человека
def show
@person = Person.find(params[:id])
@items = Item.where(:person_id => params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @person }
end
end
и тянет на представление просмотра
<table>
<% @items.each do |item| %>
<tr>
<td><%= item.description %></td>
<td><%= link_to 'Edit', edit_item_path %></td>
<td><%= link_to 'Remove', "" %></td>
</tr>
<% end %>
</table>
<br/>
<%= link_to 'Add', :controller => :items, :action => :new, :id => @person.id %>
Ссылка внизу предназначена для добавления нового элемента для человека, резюме которого мы просматриваем. Итак, в новом действии для items_controller у меня есть:
def new
@item = Item.new
@item.person_id = params[:id]
respond_to do |format|
format.html # new.html.erb
format.json { render json: @item }
end
end
Теперь я знаю, что это не будет сохранено, пока не будет вызван @ item.save. Я полагаю, это происходит с помощью кнопки отправки _form.html.erb, которая, в свою очередь, вызывает действие create в контроллере?
def create
@item = Item.new(params[:item])
respond_to do |format|
if @item.save
format.html { redirect_to @item, notice: 'Item was successfully created.' }
format.json { render json: @item, status: :created, location: @item }
else
format.html { render action: "new" }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
Я просто немного смущен, почему это никогда не устанавливается, кажется, что это должно быть так легко (я уверен, что это ха-ха). Кроме того, пока я на этом, вы могли заметить, что у меня нет ссылки на мою ссылку «Удалить» выше. Это потому, что я также не мог понять, как уничтожить действие по этой ссылке, чтобы удалить правильный элемент.
Как я уже сказал, для меня это все ново. Я ценю любую помощь! Пожалуйста, не стесняйтесь критиковать ВСЕ, что я сделал здесь. У меня нет чувств:)