Ruby on rails Rails:表单提交未正确创建属性?

Ruby on rails Rails:表单提交未正确创建属性?,ruby-on-rails,Ruby On Rails,我正在尝试制作一个应用程序来制作属于许多用户的相册,并且用户可以拥有多个相册。但是,每当我尝试创建相册时,my@user.album.count似乎不会改变 相册/new.html.erb <%= form_for (@album), url: user_albums_path, :html => { :id => "uploadform", :multipart => true } do |f| %> <div> <%= f.label

我正在尝试制作一个应用程序来制作属于许多用户的相册,并且用户可以拥有多个相册。但是,每当我尝试创建相册时,my@user.album.count似乎不会改变

相册/new.html.erb

<%= form_for (@album), url: user_albums_path, :html => { :id => "uploadform", :multipart => true } do |f| %>
<div>
    <%= f.label :name %>
    <%= f.text_field :name %>


    <%= f.label :description %>
    <%= f.text_area :description %>

    <br>

    <%=f.submit %>
</div>
<% end %>
这是我的控制台

在2012-10-01 17:41:59-0400启动了127.0.0.1的GET/assets/application.js?body=1 已服务资产/application.js-304未修改0毫秒 [2012-10-01 17:41:59]警告无法确定响应正文的内容长度。设置响应的内容长度或设置Responsechunked=true

在2012-10-01 17:42:11-0400开始为127.0.0.1发行POST/users/13/相册 AlbumsControllercreate作为HTML进行处理 参数:{utf8=>✓, 真实性\u令牌=>TTQNET1KFUWVYRU6MUOLGC5UPRSE/ZMZGMUZZZZZIZIE=,相册=>{name=>fdsafds,description=>fdafdsfafdsffsdsa},提交=>创建相册,用户id=>13} 用户加载0.1ms从users.id=?限制1[[id,13]] 0.0ms开始事务处理 SQL 0.3ms插入到相册中创建的、描述、名称、更新的值?、?、?、?[[创建时间:2012年10月1日星期一21:42:11 UTC+00:00],[说明:fdafdsfafdsfadsfsdsa],[名称:fdsafds],[更新时间:2012年10月1日星期一21:42:11 UTC+00:00]] 5.6ms提交事务 重定向到
完成了在9ms ActiveRecord中找到的302:6.0ms

好,我找到了问题。当您通过用户创建相册时,使用build方法

@album = @user.albums.build(params[:album])
然后你要保存的是用户

@user.save
因此,您的新创建方法是

def create
  @user = User.find(params[:user_id])
  @album = @user.albums.build(params[:album])
  respond_to do |format|
    if @user.save
      print @album.errors
      format.html { redirect_to user_path(@user), notice: 'Album was successfully created.' }
      format.json { render json: @album, status: :created, location: @album}
    else
      format.html { render action: "new" }
      format.json { render json: @album.errors, status: :unprocessable_entity }
    end
  end
end

您的控制台中的日志显示了什么?是否已处理POST请求,但相册控制器未处理?我猜它以回滚结束,这意味着记录无法保存。保存ithey pjam后,您可以通过在控制器中打印@album.errors来跟踪错误。抱歉耽搁了。我添加了我的控制台内容。它看起来可以工作,但当它在表单提交后重定向到usershow时,我在视图中有一个@user.albums.count,但它说0您可以粘贴您的UserAlbum模型吗?现在的问题似乎是模型之间的关联。数据已正确插入数据库,但它还应在album_users表中插入一行,其中包含新创建的相册的id和此处用户13的id。显然,相册正在发布/保存。我设法毫不费力地打印出数据库中现有的文件。我认为问题在于专辑与用户的关系。以下是我在控制器中将@albums设置为Album.all时键入的内容。[,…顺便说一句,如果你的应用程序在github上,只需将链接粘贴到这里,我会在本地查看它以发现问题。
@album = @user.albums.build(params[:album])
@user.save
def create
  @user = User.find(params[:user_id])
  @album = @user.albums.build(params[:album])
  respond_to do |format|
    if @user.save
      print @album.errors
      format.html { redirect_to user_path(@user), notice: 'Album was successfully created.' }
      format.json { render json: @album, status: :created, location: @album}
    else
      format.html { render action: "new" }
      format.json { render json: @album.errors, status: :unprocessable_entity }
    end
  end
end