2012-04-19 121 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

相关问题