【发布时间】:2011-03-29 22:30:58
【问题描述】:
我正在尝试设置一个简单的环境:
class Member < ActiveRecord::Base
has_many :microposts, :dependent => :destroy
end
class Webpage < ActiveRecord::Base
has_many :microposts, :dependent => :destroy
end
class Micropost < ActiveRecord::Base
attr_accessor :content
belongs_to :member
belongs_to :webpage
end
我正在尝试设置一个环境,当网页的“显示”方法包含微博的“创建”表单时。
最初,Microposts 只与成员相关联 - 这工作正常(在登录时将 member_id 设置为 cookie,并且该 cookie 被堆叠到 Micropost.build 方法)。
这里的问题是我无法传递webpage_id - 我尝试将webpage_id 设置为cookie 并传递它,但这并不好。目前我正在尝试将webpage_id 作为隐藏变量传递。
微博的控制器:create
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
和网页:显示视图:
<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>
每次我提交创建表单时,我都可以看到 pages_id 被传递但它没有被保存,我得到的错误是:
“找不到没有 ID 的网页”
任何帮助将不胜感激:)
干杯,
达摩
【问题讨论】:
标签: ruby-on-rails-3 forms foreign-keys associations