1

エラーが発生します

ArgumentError in PagesController#home, wrong number of arguments (0 for 1)

でも理由はわかりません。UsersDeviseのモデルDplanと、dplanbelongs_to :userと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
4

3 に答える 3

2

Devise + Omniauthを使用したときに同様の問題が発生し、次のような症状が発生しました。

  1. アプリケーションのトレースはまったくありませんでした
  2. コントローラメソッドが空であっても消えません。
  3. 他のコントローラーは問題なく動作しました

メソッドとコントローラーの名前を変更すると、ある種の名前の衝突がなくなりました。例えば:

Invites#processエラー(0の場合は1)
Invitations#process->エラー( 0の場合は1)->エラー
Friends#Addなし!

お役に立てれば。

于 2011-08-18T09:35:05.483 に答える
0

に置き換えuser_signed_in?てみてくださいcurrent_user。または、コントローラーでifステートメントを回避するために追加before_filter :authenticate_user!してみてください。application_controller.rb

于 2011-08-17T03:43:57.703 に答える
0

私は実際にそれを理解しましresources :dplansた.routes.rbに欠けていました. ご助力いただきありがとうございます!

于 2011-08-18T17:22:10.873 に答える