我有一款简单的跳伞应用程序。降落伞包装工跟踪他们的包装工作。每个降落伞钻机有几个包件。
我通过在平台细节(即反射#2)下显示rig_type_number,使显示视图工作得很好,但我只能让rig_id在索引的同一列中工作。理想情况下,我也希望使用rig_type_number而不是ID。
如何在视图中引用@rigs.rig_type_number?的效果?
这对我来说是有道理的,但不管用:
<td><%= link_to packjob.rig_id,rig_path(rig.rig_type_number) %>我必须为索引控制器设置where子句吗?


db:
class CreatePackjobs < ActiveRecord::Migration[5.1]
def change
create_table :packjobs do |t|
t.string :packer
t.string :rig
t.references :rig, foreign_key: true
t.timestamps
end
end
end
class CreateRigs < ActiveRecord::Migration[5.1]
def change
create_table :rigs do |t|
t.boolean :rig_status
t.string :rig_type_number
t.integer :rig_season_jumpnum
t.date :rig_res_last
t.string :rig_res_who
t.timestamps
end
end
endpackjobs_controller:
class PackjobsController < ApplicationController
def index
@packjobs = Packjob.paginate(page: params[:page]).order('id DESC')
@rigs = Rig.where(rig_status: "t")
end
def show
@packjob = Packjob.find(params[:id])
@rig = Rig.find(@packjob.rig_id)
end
def new
@packjob = Packjob.new
@rigs = Rig.where(rig_status: "t")
end
def edit
@packjob = Packjob.find(params[:id])
@rigs = Rig.where(rig_status: "t")
end
def create
@packjob = Packjob.new(packjob_params)
@rigs = Rig.where(rig_status: "t")
if @packjob.save
redirect_to @packjob
else
render 'new'
end
end
def update
@packjob = Packjob.find(params[:id])
@rigs = Rig.where(rig_status: "t")
if @packjob.update(packjob_params)
redirect_to @packjob
else
render 'edit'
end
end
def destroy
@packjob = Packjob.find(params[:id])
@packjob.destroy
redirect_to packjobs_path
end
private
def packjob_params
params.require(:packjob).permit(:packer, :rig_id)
end
def rigs_params
params.require(:rig).permit(:rig_status, :rig_type_number)
end
endshow.html.erb:
<p>
<b>Datestamp:</b>
<%= @packjob.created_at.strftime("%m/%d/%Y %I:%M %P") %><br>
</p>
<p>
<strong>Packer:</strong>
<%= @packjob.packer %>
</p>
<p>
<strong>Rig:</strong>
<%= @rig.rig_type_number %><br>
</p>
<%= link_to 'Edit', edit_packjob_path(@packjob) %> |
<%= link_to 'Back', packjobs_path %>index.html.erb:
<h1>Listing Packjobs</h1>
<%= link_to 'New Packjob', new_packjob_path %> | <br>
<br>
<div class="digg_pagination">
<%= will_paginate @packjobs, :container => false %>
</div>
<table id=listtable CELLPADDING="4" border="1">
<tr class="headerBlue" >
<th>Datestamp</th>
<th>Packer</th>
<th>Rig</th>
<th colspan="3"></th>
</tr>
<% @packjobs.each do |packjob| %>
<tr class="<%= cycle('rowA', 'rowB') %>">
<td><%= link_to packjob.created_at.strftime("%m/%d/%Y %I:%M:%S %P"),packjob_path(packjob.id) %></td>
<td><%= packjob.packer %></td>
<td><%= link_to packjob.rig_id,rig_path(packjob.rig_id) %>
<td><%= link_to 'Show', packjob_path(packjob) %></td>
<td><%= link_to 'Edit', edit_packjob_path(packjob) %></td>
<td><%= link_to 'Destroy', packjob_path(packjob),
method: :delete,
data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
</table>
<div class="digg_pagination">
<div class="page_info">
<%= page_entries_info @packjobs %>
</div>
<%= will_paginate @packjobs, :container => false %>
</div>
<br><%= link_to 'New Packjob', new_packjob_path %> |编辑:
模型:
class Packjob < ApplicationRecord
belongs_to :rig
validates :packer, presence: true
validates :rig_id, presence: true
self.per_page = 25
end
class Rig < ApplicationRecord
has_many :packjobs
validates :rig_type_number, presence: true
self.per_page = 25
end发布于 2018-02-23 04:12:33
如果正确设置了关联,则可以引用以下关联对象:
<td><%= link_to packjob.rig.rig_type_number,rig_path(packjob.rig_id) %>发布于 2018-02-23 04:00:46
您可以按下面的方式调用它,以防在PackJob模型中有PackJob关联:
<td><%= link_to packjob..rig.rig_type_number,rig_path(packjob.rig_id) if packjob.rig.present? %> </td>https://stackoverflow.com/questions/48940581
复制相似问题