问题描述
我有一个嵌套在我的站点控制器下的系统控制器。我想 .dup 一个系统,但我收到“无法找到没有 ID 的系统”错误。
我的按钮看起来像这样
c
我的控制器
<%= link_to 'Duplicate System',site_system_path(@site,item.system),action: "duplicate",class: "dropdown-item" %>
我的路线
class Sites::SystemsController < ApplicationController
before_action :set_system,only: [:show,:edit,:update,:destroy]
before_action :set_site
def new
@system = System.new
end
def duplicate
@site = Site.find(params[:site_id])
@system = System.find(params[:system_id]).dup
render :new
end
def create
@system = System.new(system_params)
@system.site = @site
if @system.save
render json: @system
else
render json: {errors: @site.errors.full_messages}
puts @site.errors.full_messages
end
end
# PATCH/PUT /systems/1
# PATCH/PUT /systems/1.json
def update
respond_to do |format|
if @system.update(system_params)
format.html { redirect_to site_systems_path(@site),notice: 'System was successfully updated.' }
format.json { render :show,status: :ok,location: @system }
else
format.html { render :edit }
format.json { render json: @system.errors,status: :unprocessable_entity }
end
end
end
# DELETE /systems/1
# DELETE /systems/1.json
def destroy
@system.destroy
respond_to do |format|
format.html { redirect_to site_systems_path(@site),notice: 'System was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_system
@system = System.find(params[:id])
end
def set_site
@site = Site.find(params[:site_id])
end
# Only allow a list of trusted parameters through.
def system_params
params.require(:system).permit(:name,:site_id,:systemtype)
end
end
我按照这个问题 Duplicate an entry in Rails from show page 构建了我的按钮,并在非嵌套控制器上对其进行了测试,并且效果很好。
我想我只是在寻找如何将网站传递到混合中:)
我尝试了一些东西,但似乎没有达到目标,提前致谢。
解决方法
for i in *.ZMAT; do mkdir -p out/$i ; ln -s $PWD/$i out/$i/ZMAT ; done
resources :sites do
resources :systems,controller: 'sites/systems' do
get :duplicate
end
end