2013-12-10 62 views
0

我試圖創建兩個動作,都去「新」視圖。唯一的區別是我希望new_e_drawing操作運行incrament_e方法,而新操作運行incrament方法。Rails路由:兩個動作指向相同的視圖

def new 
    @drawing = Drawing.new 
    @drawing = @drawing.incrament(@drawing) 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @drawing } 
    end 
    end 

    def new_e_drawing 
    @drawing = Drawing.new 
    @drawing = @drawing.incrament_e(@drawing) 

    respond_to do |format| 
     format.html new.html.erb 
     format.json { render json: @drawing } 
    end 
    end 

我希望他們都能帶我到名爲「新」的視圖。我不知道如何爲new_e_drawing操作設置路由或respond_to語句。我試過這些沒有成功:

get 'drawings/new' => 'drawings#new_e_drawing' 
match 'drawings/new_e_drawing' => 'drawings#new_e_drawing' 

感謝您的幫助。

+0

'@ drawing.incrament(@drawing)'自動被護欄產生的?爲什麼要傳遞你調用該方法的對象? – usha

回答

1

在new_e_drawing操作的html塊中顯式渲染「新」模板。

def new 
    @drawing = Drawing.new 
    @drawing = @drawing.incrament(@drawing) 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @drawing } 
    end 
    end 

    def new_e_drawing 
    @drawing = Drawing.new 
    @drawing = @drawing.incrament_e(@drawing) 

    respond_to do |format| 
     format.html { render :template => "new" } 
     format.json { render json: @drawing } 
    end 
    end 

在你的路線,新的行動

match 'drawings/new_e_drawing' => 'drawings#new_e_drawing' 

路線會,因爲它是CRUD的一部分

+0

當我嘗試這個我得到以下錯誤'ActiveRecord :: RecordNotFound在DrawingsController#顯示 找不到繪圖與id = new_e_drawing' – sabrams

+0

添加'匹配'圖紙/ new_e_drawing'=>'圖紙#new_e_drawing''到top of your routes.rb – usha

+0

太棒了!將路線移到頂端後,我只需將模板更改爲「繪圖/新建」。 – sabrams

相關問題