2013-02-26 47 views
0

我有一個非常小的應用程序,我可以在rails中構建。這是一個簡單的重量跟蹤應用程序。我創建了一個User模型,它有一個註冊頁面。一旦用戶登錄,它們將被重定向到user#show視圖。這是迄今爲止用戶控制器:可能將表單添加到導軌中的另一個模型視圖中

class UsersController < ApplicationController 
before_filter :authenticate_user! 

def show 
    @user = current_user 
end 

end 

我還有其他2款機型一個是Weight模型,另一個是Goal模式,我想這有啥當用戶註冊,他們都帶有一個屏幕,詢問他們輸入當前體重和目標體重,然後這些信息將分別存儲在WeightGoal模型中,以及登錄的用戶ID。

到目前爲止,我已經能夠表單添加到用戶show.html.erb模板:

<%= form_for @user do |f| %> 

    <%= f.fields_for :weight do |builder| %> 
    <fieldset> 
     <%= f.label :value, "Current weight" %><br /> 
     <%= f.text_field :value %><br /> 
    </fieldset> 
    <% end %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

哪個正確呈現形式,但是當我然後點擊提交按鈕,它只是進入一個錯誤頁面,指出Unknown action- The action 'update' could not be found for UsersController 。我假設iM做錯了,因爲它應該嘗試併發送到創建操作。

有沒有人可以幫助我回到正確的道路上,我非常喜歡鐵軌上的菜鳥。

回答

0

您正在使用form_for導軌輔助細胞和傳遞@user它,因爲@user是一種持久性模型(保存在分貝),然後將所生成的形式將具有動作/users/:idPUT方法,這樣的請求將被髮送到一個在UsersController命名爲update行動,看來你沒有在你像下面UsersController

應該不會停定義的動做:

def update 
    @user = Users.find(params[:id]) 
    if @user.update_attributes(params[:user]) 
    # do something if saving succeeds 
    else 
    # do something if saving fails 
    end 
end 
+0

噢,我明白了,那麼最好如何將重量和目標值插入到各自的表中? – 2013-02-26 20:41:25

+0

我剛添加在該代碼和接收到的以下錯誤: '{ 「UTF8」=> 「✓」, 「_method」=> 「放」, 「authenticity_token」=> 「ciFbrD782Q + fS9h8gSZxHD2fEBlWoTVFTT2asHhcpPQ =」, 「 user「=> {」weight「=> {」value「=>」1.5「}} 」commit「=>」試圖將體重模型的值內容保存到用戶表中。我該怎麼做才能保存到自己的桌子上。 – 2013-02-26 21:09:56

+0

@Khaled說,你創建一個實例變量@user保存到用戶表。同樣的事情可以做到其他人,體重,目標等。我會做它使用自定義散列,而不是'@ weight.update_attributes({:value1 => params [:用戶] [:value1],:value2 =>參數[:用戶] [:值2]})' – kasperite 2013-02-26 21:36:51

2

那麼這與你的所有型號無關。這與您沒有在您的控制器中定義update方法有關。

如果您想嵌套模型,那麼您可以查看accepts_nested_attributes_for

除此之外,一個show頁面通常只顯示該對象的只讀。一個edit頁面具有該對象的可編輯形式。

+0

會更好,然後創建一個名爲例如儀表板另一個控制器,並使用索引採取這種形式的行動?我基本上是儘量保持最小。 – 2013-02-26 20:40:48

+0

在那(​​和幾乎任何其他)的情況下:想1頁,1模型。 – harm 2013-02-27 08:04:03

+0

非常感謝,非常感謝。 – 2013-02-27 10:08:30

0

我相信,AF ter搜索這個問題有類似的問題,它不是更新丟失,但編輯。

我知道這是一個古老的線程,你可能已經解決了這個問題,但如果不嘗試添加此:

def edit 

    @user = User.find(params[:id]) 

end 
相關問題