我有一个包含大量页面的Rails应用程序,每个页面都有很多个人。在每个页面上都有一个链接,用于在该页面上创建新的convo。这是该链接的代码:
<%= link_to'New Convo',new_convo_path(:page => @page)%>
但是,在下一页上,“convo / new”页面属性为空。我错过了什么?
编辑这里是我的新设计和创建函数
def new
@convo = Convo.new(params[:page])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @convo }
end
end
# POST /convos
# POST /convos.xml
def create
@convo = Convo.new(params[:convo])
respond_to do |format|
if @convo.save
format.html { redirect_to(@convo, :notice => 'Convo was successfully created.') }
format.xml { render :xml => @convo, :status => :created, :location => @convo }
else
format.html { render :action => "new" }
format.xml { render :xml => @convo.errors, :status => :unprocessable_entity }
end
end
end
答案 0 :(得分:2)
您需要加载页面...尝试设置过滤器之前...
before_filter :find_page
private
def find_page
@page = Page.find(params[:page_id])
end
然后使用嵌套资源构建
def new
@convo = @page.convos.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @convo }
end
end
def create
@convo = @page.convos.build(params[:convo])
.....
end
答案 1 :(得分:2)
我的猜测是你错过了“:page =>”
def new
@convo = Convo.new(:page=>params[:page])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @convo }
end
end