2010-10-16 71 views
1

我想在Ryan Bates的基於railscast的編輯表單中設置一個預覽按鈕。有兩個按鈕[編輯]和[更新]。導軌,預覽按鈕的形式問題

當用戶點擊預覽按鈕時,控制器中的「更新」功能被調用。如果我只是根據文章表的查找來設置@article變量(按照下面的控制器),則預覽按鈕會將表單中的值重置爲保存的數據,並且我失去了我的編輯。

有沒有辦法讓我有更新的預覽模式?新作品很好,只有編輯有這個問題。

def update 
    @article = Article.find(params[:id]) 

    if params[:preview_button] || [email protected]_attributes(params[:article]) 
     render :action => 'edit' 
    else 
     respond_to do |format| 
     format.html { redirect_to(@article, :notice => 'Article was successfully updated.') } 
     end 
    end 
    end 

編輯:我嘗試使用下面的代碼,而不是

if params[:preview_button] || [email protected]_attributes(params[:article]) 
    @article = Article.new(params[:article]) 
    render :action => 'edit' 
else 

它保留了數據,但是有一個副作用。點擊[http:// localhost:3000/articles/4/edit]中的預覽按鈕,重定向到[http:// localhost:3000/articles/4],再次點擊,進入新視圖[http:// localhost: 3000 /篇。

回答

1
if params[:preview_button] || [email protected]_attributes(params[:article]) 

只有在preview_button參數不存在的情況下才會更新文章。

你想要的東西,如:

@article.attributes = params[:article] 
if params[:preview_button] or [email protected] 
    render :action => 'edit 
+1

要非常,非常小心混合'||'和'或'。在Ruby中,它們不是一回事。 – vonconrad 2010-10-16 13:31:20