我想做的是将数据显示如下;
a.title
存在,但a.title
不存在,则显示@school.rooms.where(day: d).first.name
@school.rooms.where(day: d).first.name
不存在但a.title
存在@school.rooms.where(day: d).first.name
如果两个数据都存在,则有效。
虽然我尝试了一些代码,例如exist?
,nil?
等,但我无法做到。
如果你能在Rails中给我最好的方法,我将不胜感激。
查看代码
<div class="row">
<h1 class="col-md-12"><%= @school.title %></h1>
</div>
<div class="row">
<% @school.days.each do |d| %>
<h3>Day<%= d %></h3>
<% @school.articles.where(day: d).each do |a| %>
<strong><%= a.title %></strong></p>
<% end %>
<p>Room: <%= @school.rooms.where(day: d).first.name %></p>
<% end %>
</div>
控制器代码
class SchoolsController < ApplicationController
def show
@school = School.find(params[:id])
end
end
型号代码
class School < ActiveRecord::Base
has_many :articles
has_many :rooms
def days
self.articles.pluck(:day).uniq
end
end
class Article < ActiveRecord::Base
belongs_to :school
end
class Room < ActiveRecord::Base
belongs_to :school
end
模式
ActiveRecord::Schema.define(version: 20150999999999) do
create_table "rooms", force: true do |t|
t.integer "school_id"
t.integer "day"
t.string "name"
t.string "detail"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "articles", force: true do |t|
t.integer "school_id"
t.integer "day"
t.string "start_time"
t.string "end_time"
t.integer "category"
t.string "title"
t.string "contents"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "schools", force: true do |t|
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
end
如果你能给我任何建议,我将不胜感激。
答案 0 :(得分:0)
如果您始终存在 数据(如果BitmapFactory.decodeFile(f.getAbsolutePath());
没有,则存在IE a.title
),您可以使用以下内容:
@school.rooms.where(day: d).first.name
如果 不存在,您应该可以使用“默认”值:
<p>Room: <%= a.title || @school.rooms.where(day: d).first.name %></p>