2016-02-04 65 views
0

我正在構建一個在兩個對象下面創建/嵌套的對象的Rails應用程序。呈現一個表單,該表單創建一個嵌套在兩個其他模型下的對象。

的routes.rb

resources :pages do 
    resources :referralpages do 
     resources :rewards do 
     end 
    end 
    end 

我剛加入的獎勵資源,有此爲我的表單創建一個新的獎勵

<%= form_for ([@referralpage, @reward]) do |f| %> 
    <% if @reward.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@reward.errors.count, "error") %> prohibited this reward from being saved:</h2> 

     <ul> 
     <% @reward.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="form-group"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name, class: "form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :level %><br> 
    <%= f.text_field :level, class: "form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :dscount %><br> 
    <%= f.text_field :discount, class: "form-control" %> 
    </div> 
    <div class="actions"> 
    <%= f.submit class: "btn btn-primary" %> 
    </div> 
<% end %> 

我需要幫助,得到的form_for([@referralpage ,@reward])部分工作。

這裏的點擊新的獎勵按鈕時,我收到錯誤消息:

undefined method `referralpage_rewards_path' 
<%= form_for ([@referralpage, @reward]) do |f| %> 

我的猜測是,它的路由不正確的路徑。什麼是正確的語法來讓這個工作?

我認爲它應該使這條道路

new_page_referralpage_reward 

這一功能的關鍵是使獎勵在

我已經創建了部分指標在我的獎勵引薦/ show.html.erb頁查看文件並將其呈現在referralpages/show.html.erb文件的show動作中。

回答

0

我想你不能在form_for這會導致無效的路徑放置多個資源路徑。

爲什麼你想在表單中放置2個資源路徑? 您是否計劃保存相同的數據以供引薦&獎勵型號? 如果是,只需使用一條路徑並在控制器中創建一個保存到其他模型的創建方法即可。

從這個角度來看:

此功能的點呈現在 轉診/ show.html.erb頁

獎勵如果你只打算呈現數據的獎勵轉診/ show.html.erb

轉診控制器

def show 
    @rewards = Reward.all #example 
end 

除非,你有一個像模型關係:

#Reward Model 
belongs_to :refferal 

#Referral Model 
has_many :rewards or has_one :reward 

隨着模型realtionship

def show 
    @referal = Referral.all #example 
end 

show.html.erb查看#遍歷它:

<%for referral in @referral%> 
    <% referral.rewards %> # need to iterate if has many 
    or 
    <%= referral.reward... %> 
<%end%> 
相關問題