2016-01-28 2 views
0

я создал новый Rails 4.2 проекта, настроить Sequel Gem согласно документации и побежал следующую команду, чтобы создать свой первый раздел проекта:Rails 4.2 Sequel Модель - form_for на новом не работает, как ожидалось

rails generate scaffold Author nom_de_plume:string real_name:string email_address:string code_of_conduct_date:datetime created_at:datetime updated_at:datetime --orm=sequel 

rake db:migrate 

на основе чтения на Stackoverflow и некоторые ссылки Google, моя модель скелет выглядит следующим образом:

class Author < Sequel::Model 
    # --- 
    extend ActiveModel::Naming 
    include ActiveModel::Conversion 
    def persisted? 
    true 
    end 
    # --- 
    plugin :validation_helpers 
    plugin :after_initialize 
    # --- 
    def validate 
    super 
    validates_presence [:nom_de_plume, :real_name, :email_address, :code_of_conduct_date] 
    validates_unique([:nom_de_plume, :email_address])  end # def validate 
    # --- 
    def after_initialize 
    super 
    end # def after_initialize 
end # class Author < Sequel::Model 

контроллер запасов/неизмененной до сих пор. Когда я иду на http://localhost:3000/authors/, все работает так, как ожидалось.

Однако, когда я нажимаю http://localhost:3000/authors/new «Новый Автор» ссылку, я получаю следующее сообщение об ошибке:

Showing /project/app/views/authors/_form.html.erb where line #1 raised: 

No route matches {:action=>"show", :controller=>"authors", :id=>nil} missing required keys: [:id] 

Extracted source (around line #1): 
1 <%= form_for(@author) do |f| %> 
2 
3 <% if @author.errors.any? %> 
4 <div id="error_explanation"> 
5 <h2><%= pluralize(@author.errors.count, "error") %> prohibited this author from being saved:</h2> 
6 

Очевидно, что это сломанное поведение; «show» не следует ссылаться на «новый» запрос.

Я создал новый проект, сделал не использовать сиквел рельсы камень & связанный конфигурации (с использованием по умолчанию ActiveRecord), и точно такой же код работает, как ожидалось, без ошибок.

Я провел пару часов, выполняя поиск, и не могу найти решение для этого. Я уничтожил проект и перезапустил его, и он может последовательно воспроизводить описанное поведение.

Я знаю, что могу просто отказаться продолжение-gem и вернуться к AR, но я бы действительно не хотел этого делать.

Буду признателен за правильное решение этой проблемы. Заранее спасибо.

ответ

0

Просто включите несколько больше ActiveModel суб-модулей, полный список здесь:

class Author < Sequel::Model 

    extend ActiveModel::Naming 
    include ActiveModel::Conversion 
    include ActiveModel::Model 
    include ActiveModel::AttributeMethods 
    include ActiveModel::Dirty 
    include ActiveModel::Serialization 

    def persisted? 
    true 
    end 

    # ... 

end 
1

Вы, вероятно, следует использовать active_model Sequel плагин (поставляется с Sequel), если вы используете Sequel с Rails' формы хелперов. Вы можете использовать Sequel::Model.plugin :active_model перед загрузкой классов моделей для этого. Если у вас все еще есть проблемы после этого, пожалуйста, напишите более подробную информацию. Обратите внимание, что проблема связана с проблемой Rails, а не с проблемой Sequel, поскольку отказ заключается в создании правильного маршрута.

+0

Это сработало для меня. Благодарю. – RajeshM

Смежные вопросы