2013-11-21 3 views
0

나는 이것을 하루 만에 알아 내려고 노력해 왔습니다. 누군가가이 문제에 대해 밝힐 수 있기를 바랍니다. 나를.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를 실행하면 모든 것이 제대로 작동하는 것처럼 보입니다.

도움 주셔서 감사합니다.

+0

서버 로그에 오류가 있습니까? 또한, 모델은 singuarly ('Subject' 대신에'Subject')로 명명되어야합니다. 이로 인해 ActiveRecord가 데이터베이스 스키마를 유추하는 방법에 문제가 발생할 수 있습니다. – micahbf

+0

답장을 보내 주셔서 감사합니다. 서버 로그에서 볼 수 있습니다 : 304 Not Modified ... WARN 응답 본문의 내용 길이를 결정할 수 없습니다. Subject 대신 Subject를 사용하면 모델을 롤백하고 다시 작성하는 것이 좋을까요? 아니면 'Subject'로 이름을 바꿀 수있는 더 쉬운 방법이 있습니까? –

+0

그 오류는 하나가 아닙니다. 다른 사람이 없다고 확신합니까? 모델이 진행되는 한, 예, 롤백 및 재생성이 가장 쉽습니다. 'rails d model [...]'을 생성 할 때 사용한 것과 같은 매개 변수를 사용하여 모든 파일을 자동으로 삭제할 수 있습니다. – micahbf

답변

0

내가 정확한 문제를 정확하게 파악 할 수 있지만이 문제를 해결할 수있는 다음과 같은 변화를 추천 할 수 있습니다 :

모델 클래스는 Subject (단수)의 이름을 바꿉니다.

레일 관례는 모델명을 단수, 컨트롤러 복수 (SubjectsController)로 지정하는 것입니다.

강력한 매개 변수를 사용하는 경우 attr_accessible이 필요한지 확실하지 않습니다.

어떤 오류 메시지가 표시 될 수 있습니까? 이 => '주제'로, 다음이 오류가 될 수 있습니다 (서버 로그)

+0

답장을 보내 주셔서 감사합니다. 내 모델을 Subject로 이름을 바꾸는 중입니다. 오류 메시지를 포함하도록 내 게시물을 업데이트했습니다. 잠시 동안 내 문제 중 적어도 일부는 내 모델 클래스에 대한 복수형 이름에서 유래한다고 가정 할 것이므로이를 수정하려고 노력할 것입니다. –

+0

문제는 없지만 [모델 이름 바꾸기]에 대한 설명은 여기를 참조하십시오 (http://stackoverflow.com/questions/471416/how-do-you-write-a-migration-to-rename-an- activerecord-model-and-its-table-in-ra) (우리 모두 언젠가 그것을해야한다고 걱정하지 마십시오 :) – wpp

+0

하하, 정말 고마워. 나는 단지 그것을보고 있었다 =) –

1

대신 장소에서 변수 이름을 변경, 당신은 또한 당신이 언급 한 경우 routes.rb

의 변화 경로를 고려할 수 . 모든 변수 이름을 변경하면이 문제를 해결할 수 있지만 더 쉽습니다.