可以将表单添加到rails中的另一个模型视图中
我有一个非常小的应用程序我在rails中构建。 这是一个简单的重量跟踪应用程序。 我创建了一个具有注册页面的User
模型。 用户登录后,会将其重定向到user#show
视图。 到目前为止,这是用户控制器:
class UsersController < ApplicationController before_filter :authenticate_user! def show @user = current_user end end
我有2个其他模型,一个是Weight
模型,另一个是Goal
模型,我想它,所以当用户注册时,他们会看到一个屏幕,要求他们输入当前体重和目标体重这个信息将是分别存储权Weight
和Goal
模型以及登录用户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