我一直试图解决这个问题超过一天 - 所以希望有人可以为我解决这个问题。
我认为问题源于我使用生成模型而不是支架创建我的新模型(主题)。所以我一直在比较我的所有用户模型(有效,主要是从Hartl的教程中得到的)到我的Subjects模型,我找不到任何东西。
所以我试图通过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.
错误日志(localhost / server.log)
在2013-11-21 11:59:51 -0800为127.0.0.1开始POST“/ subjects_index” 由SubjectsController处理#index为HTML 参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“xqE / 7CY2awqNy2E6DainqEKxU70DJ4uGr6hB8 + qSmhE =”,“subject”=&gt; {“subject_id”=&gt;“5001”,“study_site”=&gt; ;“3”},“commit”=&gt;“添加主题”} 主题加载(0.4ms)SELECT“subject”。* FROM“subject”LIMIT 30 OFFSET 0 在布局/应用程序内渲染subject / 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 渲染布局/ _header.html.erb(2.1ms) 渲染布局/ _footer.html.erb(0.2ms) 在36.2ms完成200 OK(浏览次数:35.0ms | ActiveRecord:0.7ms)
在2013-11-21 11:59:51 -0800开始获取127.0.0.1的“/assets/application.css?body=1” 服务资产/application.css - 304未修改(9ms) [2013-11-21 11:59:51]警告无法确定响应正文的内容长度。设置响应的内容长度或设置Response#chunked = true
解决方案:
如果有人遇到同样的问题。我最终将每个变量重命名为“Subjects”中的“Subject”。这引起了一些问题,因为其中一些实际上应该是“主题”。所以我运行了rails generate model,然后更新了新的迁移文件,然后运行了bundle exec rake db:migrate,现在一切似乎都在运行。
感谢您的帮助!
答案 0 :(得分:1)
您可以考虑在routes.rb
中更改路径,而不是在地方更改变量名称如果你提到过:as =&gt; '主题'那里,你可能会收到这个错误。 这可以通过更改所有变量名来解决,但这会更容易。
答案 1 :(得分:0)
我无法确定确切的问题,但我可以推荐以下可能解决问题的更改:
重命名模型类Subject
(单数)。
rails惯例是将模型命名为单数,控制器复数(SubjectsController
)。
如果您使用强参数,我也不确定您是否需要attr_accessible
。
您可以发布您收到的错误消息吗? (服务器日志)