Adm*_*ric 2 ruby methods resources nested ruby-on-rails
我正在处理Rails中的嵌套资源.我的用户有一个农场.
用户模型:
class User < ActiveRecord::Base
has_one :farm
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:token_authenticatable, :confirmable, :lockable, :timeoutable
attr_accessible :email, :password, :password_confirmation, :remember_me, :username
end
Run Code Online (Sandbox Code Playgroud)
农场控制器
class Farm < ActiveRecord::Base
belongs_to :user
attr_accessible :name, :contact, :adress, :user_id
end
Run Code Online (Sandbox Code Playgroud)
我的农场迁移
class CreateFarms < ActiveRecord::Migration
def change
create_table :farms do |t|
t.references :user
t.string :name
t.string :contact
t.string :adress
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的routes.rb
resources :users do
resource :farm, path: "farm"
end
devise_for :users, :path => 'account
Run Code Online (Sandbox Code Playgroud)
所以我认为我的所有参考和协会都没问题.但是当我尝试制作一个新农场时,我得到了上述错误.我在FarmsController中的新方法:
def new
@farm = @user.farm.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @farm }
end
end
Run Code Online (Sandbox Code Playgroud)
我还有load_User函数设置为before_filter
def load_User
@user = User.find(current_user)
end
Run Code Online (Sandbox Code Playgroud)
同样的事情发生在我使用的show函数中
@farm = @user.farm.find(params[:id])
Run Code Online (Sandbox Code Playgroud)
它说没有方法"找到".如果有人可以提供帮助和/或详细说明,我无法猜测或找到原因.
因为(可能)您尝试调用你有这个错误find
的Farm
情况下,它没有find
定义的方法.既然@user.farm
已经返回Farm
实例(或nil
),你应该简单地:
@farm = @user.farm
Run Code Online (Sandbox Code Playgroud)
你的第一个错误是类似的.之所以发生这种情况,是因为没有为new
方法定义方法Farm
.相反,你应该:
@farm = @user.build_farm
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
333 次 |
最近记录: |