2011-03-29 39 views
0

我試着去建立一個簡單的環境軌道:紅寶石在經過外鍵的形式

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 

我試圖建立一種環境,當一個網頁的「顯示」方法中包含一個「創造」的形式爲一個Micropost。

最初,Microposts只與會員關聯 - 並且這是正常工作(member_id在登錄時被設置爲一個cookie並且該cookie被堆疊到Micropost.build方法)。

這裏的問題是,我無法通過webpage_id - 我試圖將webpage_id設置爲一個cookie並傳遞它,但這並不好。目前我正在嘗試將webpage_id作爲隱藏變量傳遞。

的微柱控制器:創建

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> 

每次我提交的創建形式,我可以看到webpage_id被通過,但它不被保存和我得到的錯誤是:

「無法找到沒有ID的網頁」

任何幫助,將不勝感激:)

乾杯,

達摩

回答

2

你可以做的微觀柱網頁的nested resource在你的routes.rb文件。

這種方式可以使一種形式:

form_for([@webpage, Micropost.new]) do |f| 

然後將張貼到:

webpage_microposts POST /webpage/:webpage_id/microcomments 

而且你要訪問的網頁的ID在你的微柱控制器,例如:

@webpage = Webpage.find(params[:webpage_id]) 
+0

感謝邁克 - 我現在的問題是,我得到一個錯誤,與成員關聯的「構建」方法沒有定義。你可以像上面提到的那樣把一個外鍵作爲一個cookie和一個作爲一個關聯來傳遞? – 2011-03-30 02:32:56

+0

您確定它與此答案有關嗎?我沒有對模型做任何事情。 – 2011-03-30 02:35:08

+0

不要介意邁克 - 事實證明,我是一個Rails初學者和盲人:-P ... Microposts控制器中的一種類型。再次感謝您的幫助! – 2011-03-30 02:54:29