2017-01-10 39 views
0

我通過Rails命令rails g portfolio titre:string, thumbnail:string lien:string description:text爲投資組合生成了一個腳手架。我還添加了FriendlyId以獲得更好的URL,這就是所有。這是'更新'行動。更新數據時奇怪的重定向

def update 
    if @portfolio.update(portfolio_params) 
     redirect_to @portfolio, notice: 'Portfolio mis à jour.' 
    else 
     render :edit 
    end 
    end 

然而,想在我的投資組合,以更新項目時,提交按鈕嘗試去通過補丁圖集#更新「,而是把一個「」而不是「/」,這給了我No route matches [PATCH] "/portfolios.test-1"

對於路線,我只有resources :portfolios

編輯:添加的形式

<%= form_for @portfolio, url: portfolios_path(@portfolio) do |f| %> 
    <% if portfolio.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(portfolio.errors.count, "error") %> prohibited this portfolio from being saved:</h2> 

     <ul> 
     <% portfolio.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :titre %> 
    <%= f.text_field :titre %> 
    </div> 

    <div class="field"> 
    <%= f.label :categorie %> 
    <%= f.text_field :categorie %> 
    </div> 

    <div class="field"> 
    <%= f.label :description %> 
    <%= f.text_area :description %> 
    </div> 

    <div class="field"> 
    <%= f.label :thumbnail %> 
    <%= f.file_field :thumbnail %> 
    </div> 

    <div class="field"> 
    <%= f.label :lien %> 
    <%= f.text_field :lien %> 
    </div> 

    <div class="actions"> 
    <%= f.submit 'Enregistrer' %> 
    </div> 
<% end %> 

我沒有任何其他的可能性,這樣做@portfolio, url: portfolios_path(@portfolio),否則Rails認爲'@portfolio'爲零

編輯2:添加私人'set_portfolio'參數

private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_portfolio 
    @portfolio = Portfolio.friendly.find(params[:id]) 
    end 

我的應用有什麼問題?

+0

我們可以看到表單的代碼嗎? – Shannon

+0

我更新了我的問題 – Jaeger

回答

1

portfolios_path是收集路徑。

更改它 portfolio_path應該修復它。

<%= form_for @portfolio, url: portfolio_path(@portfolio) do |f| %>

我猜你會使用這種形式來創建新的投資組合一樣,所以將其更改爲<%= form_for(@portfolio) %>應該修復它,也將努力爲兩種情況。 form_for將提交到正確的路徑。

+0

現在我得到'沒有路由匹配{:action =>「show」,:controller =>「portfolio」,:id => nil}缺少必需的鍵:[:id]',while針對我放置'form_for'的行。我相信Rails沒有得到這是'新'行動,而不是'show' – Jaeger

+0

更新的答案。 –

+0

困擾我的是,我嘗試了很多東西,我記得試過這個,儘管它失敗了。那麼現在它可以工作,所以謝謝你! – Jaeger