我在这里遇到一些问题。我有一个模型,视图和控制器。我从index.html.erb转到animals.html.erb。 (假设从我发布的代码中已经发生了这种情况)在动物视图中,我想显示由我的个人资料模型表示的一些数据。
这是我的代码。
class Profile < ActiveRecord::Base
has_many :animals
validates :firstname, presence: true
validates :lastname, presence: true
validates :address, presence: true
validates :city, presence: true
validates :state, presence: true
validates :zip, presence: true
validates :gender,
presence: true,
length: {minimum: 1, maximum: 2 }
validates :breeder, presence: true
end
class Animal < ActiveRecord::Base
belongs_to :profile
validates :fullname, presence: true
validates :profileID, presence: true
validates :age,
presence: true,
length: {minimum: 1, maximum: 3 }
validates :gender,
presence: true,
length: {minimum: 1, maximum: 2 }
validates :purrfactor, presence: true
:weight
:height
:length
validates :fixed, presence: true
validates :shots, presence: true
validates :papers, presence: true
validates :created_at, presence: true
validates :updated_at, presence: true
end
class HomeController < ApplicationController
def index
end
def show
@profile = Profile.find(1)
end
end
<div class="container-fluid">
<div class="row">
<p><%= @profile.firstname %></p>
</div>
</div>
配置文件加载(0.2ms)SELECT“profiles”。* FROM“profiles”WHERE“profiles”。“id”=? LIMIT 1 [[“id”,1]]
我不希望任何人解释我的问题。到目前为止我所学到的关于RoR的知识应该可行。但是,它不会从我的Sqlite3 db中恢复firstname模型值。我的find语句生成的SQL是否正确?我的模特搞砸了吗?只是寻找一些建议,引导我朝着正确的方向来解决这个问题。另外,我应该在模型中引用ID(我的数据库表中的唯一ID)提前非常感谢!
我认为家庭/演出路线会起作用。 link_to标记转到正确的操作并呈现显示页面而不会出错。
<%= link_to "Get Started!", {:controller => 'home', :action => 'show'}, { class: "btn btn-primary" } %>
get "home/index"
get "home/show"
home_index GET /home/index(.:format) home#index
home_show GET /home/show(.:format) home#show
root GET / home#index
我清理了一下我的代码。摆脱了不需要的动物控制器,以及路线。我更新了我的帖子,以显示这些修订。
我发现生成的SQL有效并返回了Active Record,但是它没有显示在View上。从Profiles.rb模型类中删除attr_accessible属性后显示的值。
为什么attr_accessible属性会阻止数据在视图上显示?我认为这个属性仅用于质量分配安全性。 I.E.更新,保存等...
答案 0 :(得分:1)
模型中不需要:id
,因为它们会自动生成。在我看来,如果路线是正确的并且动物视图在home#show
上呈现,那么RoR中的一切都可能正常,并且数据库中不存在只有:id 1
的配置文件。