Ruby on Rails模型值未返回

时间:2014-03-27 18:13:15

标签: ruby-on-rails

我在这里遇到一些问题。我有一个模型,视图和控制器。我从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>

由Find

生成的SQL

配置文件加载(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" } %>

的routes.rb

  get "home/index"
  get "home/show"

Rake Routes

  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.更新,保存等...

1 个答案:

答案 0 :(得分:1)

模型中不需要:id,因为它们会自动生成。在我看来,如果路线是正确的并且动物视图在home#show上呈现,那么RoR中的一切都可能正常,并且数据库中不存在只有:id 1的配置文件。