未找到操作 - 路线正确 - 视图已渲染

时间:2015-10-22 11:46:57

标签: ruby-on-rails controller action

我的rails应用程序正在调用一个不存在的方法。

我调用的方法的路线是:

  

get_json GET /get_json(.:format)data#get_json

我的控制器代码:

class DataController < ApplicationController


 before_filter :authenticate
  skip_before_filter :verify_authenticity_token

protected
  def authenticate
    token = params[:token]
    @user = User.find_by(token: token)
    if @user.nil?
      render nothing: true, status: :unauthorized
      return
    end
  end



  def get_json
    @users = User.all
    @owners = Owner.all
    @tags=Tag.all
    @ideas=Idea.all
    @votes=Vote.all
    @votings=Voting.all
  end
end

如果我对此提出请求。我得到一个空的Json字符串:

{"tags":[],"ideas":[],"owners":[],"votes":[],"votings":[],"users":[]}

这是我的数据视图(getjson.json.jbuilder):

    json.tags @tags do |tag|
  json.extract! tag, :id, :typ, :text
end

json.ideas @ideas do |idea|
  json.extract! idea, :id, :title, :text, :owner_id, :voting_id, :voteCount
  json.tags idea.tags do |tag|
    json.extract! tag, :id
  end
end

json.owners @owners do |owner|
  json.extract! owner, :id, :name, :user_id
end

json.votes @votes do |vote|
  json.extract! vote, :id, :kommentar, :owner_id, :voting_id, :idea_id
end

json.votings @votings do |voting|
  json.extract! voting, :id, :status
end

json.users @users do |user|
  json.extract! user, :id, :name, :token, :owner_id, :isLoggedIn
end

我们不知道问题是什么。

1 个答案:

答案 0 :(得分:0)

不要将保护放在控制器之上。 超越它的一切都受到保护。这就是它无法找到行动的原因。

像这样:

    class DataController < ApplicationController

     before_filter :authenticate
      skip_before_filter :verify_authenticity_token

     def get_json
        @users = User.all
        @owners = Owner.all
        @tags=Tag.all
        @ideas=Idea.all
        @votes=Vote.all
        @votings=Voting.all
      end

    protected
      def authenticate
        token = params[:token]
        @user = User.find_by(token: token)
        if @user.nil?
          render nothing: true, status: :unauthorized
          return
        end
      end
    end