我无法链接到显示文件 http://localhost:3000/sigs/3 我得到这个错误 SigsController中的ActiveRecord :: RecordNotFound#show 找不到'id'= 3
的Ofertum请帮助我。这是我的密码 我有两种型号:一种用于报价,一种用于标牌 每个报价都有一个标志,每个标识都有一个提议
在信号模型中
belongs_to :ofertum
在铁皮模型中
has_many :sigs
在航线上
resources :oferta
resources :sigs
在信号控制器中
class SigsController < ApplicationController
def new
@ofertum = Ofertum.find(params[:id])
@sig = @ofertum.sigs.build
end
def create
@ofertum = Ofertum.find(params[:id])
@sig = @ofertum.sigs.build(sig_params)
if @sig.save
redirect_to sigs_path(:id => @ofertum.id)
end
end
def destroy
@ofertum = Ofertum.find(params[:id])
@sigs=@ofertum.sigs
if @sigs.destroy
redirect_to root_path
end
end
def show
@ofertum = Ofertum.find(params[:id])
@sigs=@ofertum.sigs
end
def edit
end
def update
end
def index
end
def destroy
end
private
def sig_params
sig_params = params.require(:sig).permit([:name,:comment,:description,:price,:image])
end
end
在oferta index.html.erb
<% @oferta.each do |o| %>
<ul class="cat">
<li class="pull-left"><h2><%= link_to o.offer,o %></h2><br><h4><%= o.description %></h4>
<div class="main">
<% if o.sigs.exists? %>
<div id="myBtnContainer">
<% for item in o.sigs %>
<button class="btn active" onclick="filterSelection('<%= item.name %>')"><%= item.name%><%= link_to item.description,item %><br></button>
<% end %>
</div>
<div class="row">
<% for item in o.sigs %>
<div class="column <%= item.name %>">
<div class="content">
<%= image_tag item.image.url(), style: "width:100%"%>
<h4><br><%= item.name %></h4>
<p><%= item.comment %></p>
</div>
</div>
<% end %><br><br>
</div>
<% end %>
</div>
<% end %>
在数据库中
class AddNameToSig < ActiveRecord::Migration[5.2]
def change
add_column :sigs, :name, :string
add_column :sigs, :comment, :string
add_column :sigs, :description, :text
add_column :sigs, :price, :string
end
end
在sigs show.html.erb
中<%= @sig.name %>
<div class="container">
<%= link_to @sig, class: "btn tf-btn btn-default", method: :delete, data: { confirm: "Are you sure you want to delete this sign?" } do %>Delete <% end %>
</div>
答案 0 :(得分:2)
路径/sigs/3
中的参数是一个信号,而不是一个通量。所以你可以这样做
def show
sig = Sig.find(params[:id])
@sigs = sig.ofertum.sigs
end
或
def show
ofertum = Sig.find(params[:id]).ofertum
@sigs = ofertum.sigs
end
是的,如果您在视图中甚至需要一个角膜
def show
@ofertum = Sig.find(params[:id]).ofertum
@sigs = @ofertum.sigs
end