Rails:在另一个模型的创建表单中捕获模型ID

时间:2011-03-28 12:26:49

标签: ruby-on-rails-3 models nested-forms relationships

我目前有三个模型,我试图将其中一个模型(webpage.id)引用到另一个模型(Micropost)中 - 这是情况:

class Member < ActiveRecord::Base
  has_many :microposts
end

class Webpage < ActiveRecord::Base
  has_many :microposts, :dependent => :destroy
end

class Micropost < ActiveRecord::Base
  belongs_to :member
  belongs_to :webpage
end

我要做的是从网页':show'方法创建一个Micropost。

这是Micropost控制器:

class MicropostsController < ApplicationController
  def create
    @micropost  = current_member.microposts.build(params[:micropost])
    @webpage = Webpage.find(params['webpage_id'])
    @micropost.webpage = @webpage
    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_path
    else
      @feed_items = []
      render 'pages/home'
    end
  end
end

并从网页'show'视图:

<table class="front" summary="For signed-in members">
    <tr>
      <td class="main">
        <h1 class="micropost">What's up?</h1>
        <%= form_for @micropost do |f| %>
          <%= render 'shared/error_messages', :object => f.object %>
          <div class="field">
            <%= f.text_area :content %>
            <input type="hidden" id="webpage_id" name="micropost[webpage_id]" value="<%= @webpage.id %>"/>
          </div>
          <div class="actions">
            <%= f.submit "Submit" %>
          </div>
        <% end %>
      </td>
    </tr>
</table>

当我保存表单时,这是我得到的错误:

“无法找到没有ID的网页”

当我从表单中删除对网页的引用时,表单成功保存并设置了user_id字段 - 所以这个工作正常(但显然在这种情况下,webpage_id为NULL)。

关于我哪里出错的想法?​​

干杯,

达莫

1 个答案:

答案 0 :(得分:0)

转储参数以确保正确传递webpage_id。

在您的视图中添加:

<%= debug params %>