나는 이것을 하루 만에 알아 내려고 노력해 왔습니다. 누군가가이 문제에 대해 밝힐 수 있기를 바랍니다. 나를.RoR : text_field에서 가져온 두 개의 정수를 사용하여 새 레코드를 추가하는 방법을 알아낼 수 없습니다.
저는이 문제가 저의 새로운 모델 (과목)을 만드는 데있어 스 캐 폴드 대신 생성 모델을 사용한다고 생각합니다. 그래서 내가 갖고있는 모든 것을 내 사용자 모델 (작동하는 Hartl의 튜토리얼에서 주로 파생 됨)과 내 주제 모델에 비교해 봤지만 아무것도 찾을 수 없습니다.
그래서 나는 create 명령을 통해 새로운 제목을 추가하려고하는데, 아무 것도하지 않습니다. 페이지는 색인으로 이동하기 전에 작동하는 것처럼 작동합니다. 콘솔에서 주제를 추가 할 수 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.
subjects_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>
subjects.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.
오류 로그 (로컬 호스트/server.log)
는 HTML 매개 변수로 SubjectsController # 지수에 의해 2013년 11월 21일 11시 59분 51초 -0800 처리에 127.0.0.1에 대한 POST "/ subjects_index을"시작 : { "UTF8"=> "✓" "authenticity_token"=> "xqE/7CY2awqNy2E6DainqEKxU70DJ4uGr6hB8 + qSmhE =", "subject"=> { "subject_id"=> "5001", "study_site"=> "3"}, "commit"=> "제목 추가"} 주제로드 (0.4ms) SELECT "주제"* FROM "주제"LIMIT 30 OFFSET 0 레이아웃/응용 프로그램 내에서 렌더링 된 제목/index.html.erb (1.9ms) 렌더링 된 레이아웃/_shim.html.erb (0.0ms) 사용자로드 (0.3ms) SELECT "users". * FROM "users"WHERE "users". "remember_token"= '1a-UA_7SDRyrc7Pd1zKU5g'LIMIT 1 Ren dered layouts/_header.html.erb (2.1ms) 렌더링 된 레이아웃/_footer.html.erb (0.2ms) 36.2ms에 200 OK 완료 (보기 : 35.0ms | ActiveRecord : 0.7ms)
시작된 "/assets/application.css?body=1"은 127.0.0.1에서 2013-11-21 11:59:51 -0800 게재 된 광고 /application.css - 304 수정 됨 (9ms) [2013-11-21 11:59:51] WARN 응답 본문의 내용 길이를 결정할 수 없습니다.
경우 사람이 같은 문제로 실수를 한단다 : 응답의 설정 내용 길이 또는 설정 응답 번호는 = 사실
솔루션을 청크. 나는 모든 변수를 "주제"에서 "주제"로 바꾸는 것을 끝내었다. 이 중 일부는 실제로 "과목"이었으므로 몇 가지 문제가 발생했습니다. 그래서 레일스가 모델 Subject를 생성하고 새 마이그레이션 파일을 업데이트 한 다음 번들 exec rake db : migrate를 실행하면 모든 것이 제대로 작동하는 것처럼 보입니다.
도움 주셔서 감사합니다.
서버 로그에 오류가 있습니까? 또한, 모델은 singuarly ('Subject' 대신에'Subject')로 명명되어야합니다. 이로 인해 ActiveRecord가 데이터베이스 스키마를 유추하는 방법에 문제가 발생할 수 있습니다. – micahbf
답장을 보내 주셔서 감사합니다. 서버 로그에서 볼 수 있습니다 : 304 Not Modified ... WARN 응답 본문의 내용 길이를 결정할 수 없습니다. Subject 대신 Subject를 사용하면 모델을 롤백하고 다시 작성하는 것이 좋을까요? 아니면 'Subject'로 이름을 바꿀 수있는 더 쉬운 방법이 있습니까? –
그 오류는 하나가 아닙니다. 다른 사람이 없다고 확신합니까? 모델이 진행되는 한, 예, 롤백 및 재생성이 가장 쉽습니다. 'rails d model [...]'을 생성 할 때 사용한 것과 같은 매개 변수를 사용하여 모든 파일을 자동으로 삭제할 수 있습니다. – micahbf