2013-02-26 44 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 
相关问题