Я пытаюсь понять это уже больше суток - так что, надеюсь, кто-нибудь сможет пролить свет на эту проблему для меня.
Я считаю, что проблемы возникли из-за того, что я создал новую модель (субъекты) с использованием генерации модели вместо каркаса. Итак, я сравнивал все, что у меня есть, с моей моделью пользователей (которая работает и в основном заимствована из учебника Хартла) с моей моделью Subjects, и я ничего не могу найти.
Итак, я пытаюсь добавить новую тему с помощью команды create, но она ничего не делает. Перед переходом в индекс страница даже ведет себя так, как будто она работает. Я могу добавлять темы с консоли. Любая помощь будет принята с благодарностью.
subject_controller.rb
class SubjectsController < ApplicationController
def index
@subjects = Subjects.paginate(page: params[:page])
end
def new
@subject = Subjects.new
end
def create
@subject = Subjects.new(subject_params)
if @subject.save
flash[:success] = "Subject added to database."
redirect_to @subject
else
render 'new'
end
end
def show
@subjects = Subjects.find(params[:id])
end
private
def subject_params
params.require(:subject).permit(:subject_id)
end
end
темы / new.html.erb
<div class="row">
<div class="span6 offset3">
<%= form_for(@subject) do |f| %>
<!-- Look for errors -->
<% if @subject.errors.any? %>
<div id="error_explanation"></div>
<h2>
<%= pluralize(@user.errors.count, "error") %> prohibited this subject from being saved:
</h2>
<ul>
<% @subject.errors.full_message.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<!-- Add new subject to Subjects -->
<p>Subject:</p>
<%= f.text_field :subject_id %>
<%= f.submit "Add Subject", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
subject.rb
class Subjects < ActiveRecord::Base
attr_accessible :subject_id, :study_site, :treatment_group
validates :subject_id, presence: true, length: { is: 4 }, numericality: { only_integer: true }, presence: true, uniqueness: true
validates :study_site, presence: true, length: { is: 1 }, numericality: { only_integer: true }, presence: true
# validates :subject_id, :study_site, :numericality => { :only_integer => true}
end
РЕДАКТИРОВАТЬ 1.
Журнал ошибок (localhost / server.log)
Запущен POST "/ subject_index" для 127.0.0.1 в 2013-11-21 11:59:51 -0800 Обработка SubjectsController # index как параметры HTML: {"utf8" => "✓", "authentication_token" => "xqE / 7CY2awqNy2E6DainqEKxU70DJ4uGr6hB8 + qSmhE = "," themes "=> {" subject_id "=>" 5001 "," study_site "=>" 3 "}," commit "=>" Добавить тему "} Нагрузка тем (0,4 мс) ВЫБРАТЬ" темы ". * FROM" subject "LIMIT 30 OFFSET 0 Обработанные темы / index.html.erb в макетах / приложении (1,9 мс) Визуализированные макеты / _shim.html.erb (0,0 мс) Пользовательская нагрузка (0,3 мс) ВЫБРАТЬ" пользователей ". * FROM "users" ГДЕ "users". "Remember_token" = '1a-UA_7SDRyrc7Pd1zKU5g' LIMIT 1 Визуализированные макеты / _header.html.erb (2,1 мс) Визуализированные макеты / _footer.html.erb (0,2 мс) Завершено 200 OK за 36,2 мс (просмотров: 35,0 мс | ActiveRecord: 0,7 мс)
Запущен GET "/assets/application.css?body=1" для 127.0.0.1 в 2013-11-21 11:59:51 -0800 Обслуживаемый актив /application.css - 304 не изменено (9 мс) [2013-11-21 11:59:51] ПРЕДУПРЕЖДЕНИЕ Не удалось определить длину содержимого тела ответа. Задайте длину содержимого ответа или установите Response # chunked = true
Решение:
На случай, если кто-то наткнется на ту же проблему. В итоге я переименовал каждую переменную в «Тема» из «Субъекты». Это вызвало несколько проблем, потому что некоторые из них на самом деле должны были быть «Субъектами». Итак, я запустил rails generate model Subject, а затем обновил новый файл миграции, а затем запустил bundle exec rake db: migrate, и теперь все, похоже, работает.
Спасибо вам за помощь!
Subject
вместоSubjects
). Это может вызвать проблемы с тем, как ActiveRecord определяет схему вашей базы данных. - person micahbf   schedule 21.11.2013rails d model [...]
с теми же параметрами, которые вы использовали для его создания, для автоматического удаления всех файлов. - person micahbf   schedule 22.11.2013index
, а неcreate
. Попробуйте указатьurl: {action: "create"}
на своемform_for
. - person micahbf   schedule 22.11.2013