如何在无关联的控制器/视图中调用模型

时间:2014-06-08 17:35:36

标签: ruby-on-rails ruby-on-rails-4 simple-form

如何在单独的控制器/视图中调用模型?

即。我有一个User模型,在我的静态控制器中,在home方法/视图中,我想将@user称为注册表单。当我这样做时,它抛出一个无方法错误。有没有解决的办法?

我正在使用设计。

静态控制器

class StaticController < ApplicationController
  def home
    @user = User.new
  end
end

Home.html.erb

<%= simple_form_for @user do |f| %>
    <%= f.input :email %>
    <%= f.button :submit %>
<% end %>

用户模型

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :trackable, :validatable

  protected 
    def password_required? 
         false 
    end 

end

以下解决方案不起作用。我得到了

NOMETHODERROR in STATIC#HOME
undefined method `users_path' for #<#<Class:0x007fe888125480>:0x007fe8881247d8>

关于为什么会这样做的任何想法?

2 个答案:

答案 0 :(得分:1)

您收到的错误消息似乎表明没有users_path

的帮助方法

如果将以下行添加到config / routes.rb文件中,则可以使用该辅助方法。 config / routes.rb文件中的条目是创建这些辅助路径的条件。

resources :users

这是一个检查链接。  http://guides.rubyonrails.org/routing.html

答案 1 :(得分:0)

在静态控制器中的操作中,您只需创建一个用户实例

class StaticController < ApplicationController
   def home
      @user = User.new
   end
end

现在,静态/ home.html.erb

<%= @user.inspect %>

可以使用,因此您可以将其与simple_form等一起使用

如果您正在编写用户从头开始注册的话很酷,否则您可能需要查看devise gem。