세 테이블 모두 하나의 테이블에 합류했습니다. 여기에 코드입니다 :ID가없는 조인 테이블에 액세스하려고 시도했습니다.
class App < ActiveRecord::Base
has_many :app_servers
has_many :servers, :through => :app_servers
has_many :environments, :through => :app_servers
end
class Server < ActiveRecord::Base
has_many :app_servers
has_many :apps, :through => :app_servers
has_many :environments, :through => :app_servers
end
class Environment < ActiveRecord::Base
has_many :app_servers
has_many :apps, :through => :app_servers
has_many :servers, :through => :app_servers
end
class AppServer < ActiveRecord::Base
belongs_to :app
belongs_to :server
belongs_to :environment
end
이미 앱을위한 발판 및 서버 모델을 사용했습니다 및 액세스 할 수 있습니다,하지만 내가 AppServer를위한 발판을 생성하고 인덱스 페이지에 액세스하려고 할 때, 그것은 나에게 오류를 제공합니다 :
No route matches {:action=>"show", :controller=>"app_servers", :id=>#<AppServer app_id: 3, server_id: 1, environment_id: 2>}
는 제가 애플리케이션 서버 테이블을 만들 때, 나는 :id => false
것을 지정했기 때문에 오류의 이유는 믿습니다.
그래서 지금하고있는 일은 만들고있는 페이지를 만드는 것입니다. 그러면 현재 저장된 응용 프로그램과 현재 저장된 서버를 특정 환경에 매핑 할 수 있습니다. 이 문제를 어떻게 극복 할 수있는 아이디어가 있습니까?
또한 원래 내 모델이 has_and_belongs_to_many
모델 이었기 때문에 ID가없는 조인 모델에 문제가 있습니까? 또한
<h1>Listing app_servers</h1>
<table>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
<% @app_servers.each do |app_server| %>
<tr>
<td><%= app_server%></td>
<td><%= link_to 'Show', app_server %></td>
<td><%= link_to 'Edit', edit_app_server_path(app_server) %></td>
<td><%= link_to 'Destroy', app_server, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New App server', new_app_server_path %>
그리고 app_servers_controller.rb
파일 :
class AppServersController < ApplicationController
# GET /app_servers
# GET /app_servers.xml
def index
@app_servers =AppServer.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @app_servers }
end
end
# GET /app_servers/1
# GET /app_servers/1.xml
def show
@app_server = AppServer.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @app_server }
end
end
# GET /app_servers/new
# GET /app_servers/new.xml
def new
@app_server = AppServer.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @app_server }
end
end
# GET /app_servers/1/edit
def edit
@app_server = AppServer.find(params[:id])
end
# POST /app_servers
# POST /app_servers.xml
def create
@app_server = AppServer.new(params[:app_server])
respond_to do |format|
if @app_server.save
format.html { redirect_to(@app_server, :notice => 'App server was successfully created.') }
format.xml { render :xml => @app_server, :status => :created, :location => @app_server }
else
format.html { render :action => "new" }
format.xml { render :xml => @app_server.errors, :status => :unprocessable_entity }
end
end
end
# PUT /app_servers/1
# PUT /app_servers/1.xml
def update
@app_server = AppServer.find(params[:id])
respond_to do |format|
if @app_server.update_attributes(params[:app_server])
format.html { redirect_to(@app_server, :notice => 'App server was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @app_server.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /app_servers/1
# DELETE /app_servers/1.xml
def destroy
@app_server = AppServer.find(params[:id])
@app_server.destroy
respond_to do |format|
format.html { redirect_to(app_servers_url) }
format.xml { head :ok }
end
end
end
이보기 코드를 보여 그 오류를 일으킬 – fl00r
@ fl00r 어떤보기 코드? 'index.html.erb' 파일 또는'app_servers_controller.rb' 파일? – omarArroum
'인덱스 페이지에 액세스하려고 시도한 결과,이 오류'인덱스 – fl00r