我收到了错误
ArgumentError in PagesController#home, wrong number of arguments (0 for 1)
但我不知道为什么。我有一个来自Devise的Users
模型和一个Dplan
模型,其中dplan belongs_to :user
和一个用户has_many :dplans
。我正在尝试设置我的网站,以便您可以在主页上创建新的dplan。我的主页视图是:
<% if user_signed_in? %>
<h1>Hello <%= current_user.name %>! <h1>
<%= form_for @dplan do |f|%>
<div class="field">
<%= f.text_area :name %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
<% else %>
<h1>DPlanner</h1>
<p>
This is the home page for DPlanner.
</p>
<%= link_to "Sign up now!", new_user_registration_path, :class => "signup_button round" %>
<% end %>
这是dplans_controller.rb:
class DplansController < ApplicationController
def create
@dplan = current_user.dplans.build(params[:dplan])
if @dplan.save
flash[:success]="Dplan created!"
redirect_to root_path
else
render 'pages/home'
end
end
def destroy
end
end
这是pages_controller.rb:
class PagesController < ApplicationController
def home
@title = "Home"
@dplan = Dplan.new if user_signed_in?
end
end
我不明白为什么我收到此错误消息 - 页面上唯一需要的参数是dplan,我在页面控制器中定义。救命啊!
这是dplan.rb:
class Dplan < ActiveRecord::Base
attr_accessible :name
belongs_to :user
validates :name, :presence=>true, :length => { maximum => 30 }
validates :user_id, :presence =>true
end
答案 0 :(得分:2)
使用Devise + Omniauth时出现了类似的问题,包括以下症状:
当我重命名我的方法和控制器时,它发生了某种名称冲突。例如:
Invites#process
错误(1表示0)
Invitations#process
- &gt;错误(1表示0)
Friends#Add
- &gt;没错!
希望这有帮助。
答案 1 :(得分:0)
尝试将user_signed_in?
替换为current_user
。或者尝试在before_filter :authenticate_user!
中添加application_controller.rb
以避免在控制器中使用if语句。
答案 2 :(得分:0)
我实际上弄清楚了,我在routes.rb中遗漏了resources :dplans
。感谢你的帮助!