0

だから、私はレールに不慣れで、バージョン管理が必要なアプリを構築しています。私の質問はこの質問と非常に似ていますが、与えられた解決策を試しても問題は解決しませんでした。

これが私が得るエラーです:

ActionView::Template::Error (undefined method `questions_path' for #<#<Class:0x000000057bd2c0>:0x000000057b00e8>)

これが私の見解です:

<h1>Create Question </h1>
<%= form_for(@question) do |f| %>
  <div>
    <%= f.label :text %>
    <%= f.text_field :text %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

これが私のコントローラーです:

class Api::V1::QuestionsController < Api::V1::ApiController
  inherit_resources

  load_and_authorize_resource :user
  load_and_authorize_resource :through => :user

  def index
    respond_with @questions.unanswered(current_user)
  end

  def new
    @question = Question.new
  end

  def create
    @question = Question.new(params[:question])
    if @question.save
      #render :action => 'new'
    else
      puts @question.text
      puts @question.level
      puts @question.answers.inspect
    end
  end

#other methods...
end

そして最後に、私のルートの現在のバージョン:

  namespace :api, :defaults => { :format => 'json' } do
    namespace :v1 do
      resources :users do
        resources :questions, :path => 'questions' do
          collection do
            #get 'new', :to => 'questions#new', :as => :new_api_v1_user_question_path
          end
    end
      end

      resources :questions, :path => 'questions' do
        resources :answers do
          resources :responses
        end
        collection do
          #get 'new', :to => 'questions#new', :as => :new_api_v1_question_path
        end
      end
    end
  end

  match 'api/v1/user/:user_id/questions/new.html', :to => 'api/v1/user/:user_id/questions#new', :as => :new_api_v1_user_question

基本的に、私が行っている名前空間のものを使用して、他の質問から解決策を実行する方法がわかりません。ご覧のとおり、私はマッチを使用してみました。リソースと「コレクション」を使用してみた場所をコメントアウトしましたが、サイコロはありません。私はあらゆる種類のものを混ぜ合わせましたが、ここで説明したエラーが発生するか、「ルートが存在しません」というエラーが発生します。ルーティングに関するレールガイドを見たこともありますが、役に立ちません。何日も苦労しました。助けてください!

4

1 に答える 1

0

最終的にこれを理解しました。私の見解では、form_forメソッド呼び出しを次のようにする必要がありました。

<%= form_for(@question, :url => api_v1_questions_path ) do |f| %>

これで私の問題は解決しました。

于 2013-08-04T16:23:46.577 に答える