2012-04-19 120 views
0

我最近添加了命名空間到我的rails應用程序。我有一個表單,它會向電子郵件所有者發送電子郵件,但似乎在過程中發生了故障(底部出錯)。該表格沒有模型,它只是啓動電子郵件。沒有模型的表單,添加到名稱空間

這裏是我的路線文件耙路線

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do 
    namespace :admin do 
    resources :email_owners do 
     collection do 
     get :email 
     get :islas 
     post :email 
     post :islas 
     end 
     end 
    end 
    match "*path", to: "sites#not_found" # handles /en/fake/path/whatever 
    end 
root to: redirect("/#{I18n.default_locale}") # handles/
match '*path', to: redirect("/#{I18n.default_locale}/%{path}") 
end 

輸出控制器=管理員/ email_owners

email_admin_email_owners GET /:locale/admin/email_owners/email(.:format) {:locale=>/en|es/, :action=>"email", :controller=>"admin/email_owners"} 
islas_admin_email_owners GET /:locale/admin/email_owners/islas(.:format) {:locale=>/en|es/, :action=>"islas", :controller=>"admin/email_owners"} 
        POST /:locale/admin/email_owners/email(.:format) {:locale=>/en|es/, :action=>"email", :controller=>"admin/email_owners"} 
        POST /:locale/admin/email_owners/islas(.:format) {:locale=>/en|es/, :action=>"islas", :controller=>"admin/email_owners"} 
    admin_email_owners GET /:locale/admin/email_owners(.:format)   {:locale=>/en|es/, :action=>"index", :controller=>"admin/email_owners"} 
        POST /:locale/admin/email_owners(.:format)   {:locale=>/en|es/, :action=>"create", :controller=>"admin/email_owners"} 
new_admin_email_owner GET /:locale/admin/email_owners/new(.:format)  {:locale=>/en|es/, :action=>"new", :controller=>"admin/email_owners"} 
edit_admin_email_owner GET /:locale/admin/email_owners/:id/edit(.:format) {:locale=>/en|es/, :action=>"edit", :controller=>"admin/email_owners"} 
    admin_email_owner GET /:locale/admin/email_owners/:id(.:format)  {:locale=>/en|es/, :action=>"show", :controller=>"admin/email_owners"} 
        PUT /:locale/admin/email_owners/:id(.:format)  {:locale=>/en|es/, :action=>"update", :controller=>"admin/email_owners"} 
        DELETE /:locale/admin/email_owners/:id(.:format)  {:locale=>/en|es/, :action=>"destroy", :controller=>"admin/email_owners"} 

應用程序/控制器/管理/ email_owners.rb

class Admin::EmailOwnersController < Admin::BaseController 
    def email 
    owner_type = params[:owner_type] 
    subject = params[:subject] 
    message = params[:message] 

    owners = User.owners 
    owners.each do |owner| 
     OwnerMailer.all_owners(owner, subject, message).deliver 
    end 
     flash[:notice] = "Email has been sent to all Owners" 
     redirect_to admin_sites_path 
    end 
end 

這裏是我的形式,問題在哪裏。

<%= form_tag [:admin, email_admin_email_owners_path] do %> 
To: 
    <%= radio_button_tag "owner_type", "All" %> All Owners | 
    <%= radio_button_tag "owner_type", "FullTime" %> FullTime | 
    <%= radio_button_tag "owner_type", "PartTime" %> PartTime<br /> 
    <%= text_field_tag "subject", "Subject" %><br /> 
    <%= text_area_tag "message", "Message" %><br /> 
    <%= submit_tag "Send Email" %> 
<% end %> 

每當我去的路線/路徑
(HTTP://本地主機:3000/EN /管理/ email_owners /電子郵件)

我得到的錯誤

undefined method `admin_/en/admin/email_owners/email_path' for #<#<Class:0x789db30>:0x789ab78> 

但我不知道爲什麼。有任何想法嗎?我說錯了路嗎?由於

+2

嘗試<%=的form_tag email_admin_email_owners_path DO%> – iverds 2012-04-20 01:06:54

+0

這工作,非常感謝。發佈這個答案? – ruevaughn 2012-04-20 02:16:17

回答

0

的form_tag需要一個URL作爲第一個參數,所以你應該只指定你想要去的路線:

<%= form_tag email_admin_email_owners_path do %> 

Rails使用方括號作爲快捷方式生成的字符串,符號嵌套路徑或對象,所以[:admin, :email]將生成admin_email_path

當您使用方括號之間,例如[:admin, email_admin_email_owners_path]生成該網址發生了兩兩件事:

  1. email_admin_email_owners_path返回 '/ EN /管理/ email_owners /電子郵件'
  2. 方括號與內評價:管理員然後給你admin_/en/admin/email_owners/email_path其是undifined方法
+0

感謝您的超越,併爲我解釋這一點。我很感激! – ruevaughn 2012-04-20 17:15:27

相關問題