2012-07-09 48 views
0

我有一个有一些ActiveRecord派生模型的宝石。他们经过测试和工作。如何使用Rails 3中的宝石模型?

我添加了一个依赖于创业板上市,但是当我试图引用该模型中的form_for声明的访问页面,例如,我得到了可怕的method_missing错误:

undefined method mygem_mymodel_path'`

注意我的app/models目录中的模型与往常一样,都很好;将我的模型迁移到这个宝石已成为悲伤的原因。

UPDATE 1: 响应于罗宾的问题:

> rails console 
> MyModel 
=> MyGem::MyModel(id:string, name:string) 

更新2:Robin的请求表单代码 形式ERB:

<%= form_for(MyModel.new, :remote => true, :html => { :class => "new_mymodel_form", :id => "new_mymodel_form"}) do |f| -%> 

罗宾的建议之后,此是我发现它的唯一方法:

更新3:一个丑陋的解决方法

一个叫为MyModel模型和模块称为MyModule的:

post '/mymodels', to: 'mymodels#create', as: 'my_module_mymodels 

因为“作为”让我们可以控制的路径符号名称。我宁愿使用'资源'宏,但它似乎并不知道在创建它时将模块名称添加到路径符号,即使form_for附加模块名称。我假设有一种方法可以解决这个问题,但我无法找到任何有关此方案的信息。

+0

我想我已经被这个咬:http://stackoverflow.com/questions/4074830/adding-lib-to-config-autoload-paths-in-rails -3-不 - 不自动加载,我的模块。我们即将发现。 – sethcall 2012-07-09 21:40:07

+1

您的错误并不意味着无法找到该模型。这是关于路线。为了确保您的应用程序正在加载模型,请运行控制台'rails s'并输入模型的名称。 – Robin 2012-07-09 21:54:23

+0

这是一个很好的指针,谢谢。我现在正朝着这个方向看。我通过使用控制台验证了该模型是由Rails知道的,谢谢。 – sethcall 2012-07-09 21:59:03

回答

2

使用scope

scope :as => "mymodule" do 
    resources :my_resources 
end 
相关问题