可以将表单添加到rails中的另一个模型视图中

我有一个非常小的应用程序我在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模板添加一个表单:

   


这会正确呈现表单但当我单击提交按钮时,它只会转到错误页面,说明Unknown action- The action 'update' could not be found for UsersController 。 我假设iM做错了,因为它应该尝试发送到创建操作。

有没有人可以帮助我回到正确的道路上,我非常喜欢铁轨上的菜鸟。

您正在使用form_for Rails帮助程序并将@user传递给它,因为@user是一个持久模型(保存在数据库中),然后生成的表单将使用PUT方法对/users/:id执行操作,以便将请求发送对于您的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 

那么这与你的所有模型无关。 这与您尚未在控制器中定义update方法有关。

如果要嵌套模型,请查看accepts_nested_attributes_for 。

除此之外, show页面通常只显示对象的只读。 edit页面具有对象的可编辑forms。

我相信,在搜索具有类似问题的这个问题之后,它不是缺少更新而是编辑。

我知道这是一个旧线程,你可能已经解决了这个问题,但如果没有尝试添加这个:

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