如何运行最小的控制器方法

如何运行最小的控制器方法

本文介绍了如何运行最小的控制器方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! class PostsController < ActionController::Basebefore_action :authenticate_user!def index @post = current_user.posts.paginate(page: params[:page], per_page: 5) respond_to do |format| format.html format.json { render json: @post } endenddef new @post = Post.newenddef create @post = current_user.posts.build(post_param) if @post.save redirect_to action: 'index' else render 'new' end post_controller_testpost_controller_testrequire 'test_helper'class PostsControllerTest < ActionController::TestCaseinclude Devise::TestHelpersdef setup @user = users(:Bob) @post = Post.newend #passedtest 'logged in should get show' do sign_in @user get :index assert_response :successend #passedtest 'not authenticated should get redirect' do get :index assert_response :redirectend #passedtest 'should get index' do get :index assert_response :success assert_not_nil assigns(:posts)end #failingtest "should destroy post" do assert_difference('Post.count', -1) do delete :destroy, id: @postendassert_redirected_to posts_pathend #failing... devise 是设置和工作好的,但为什么在最后两种情况下,我会得到 302 错误。是因为我没有通过 @user 参数吗?我做了,但它仍然抛出相同的错误。我也检查了我的路由文件,因为 post_controller 在开发模式下正常工作。devise is setup and working fine but why I am getting 302 error in last two cases. Is it because I am not passing @user parameters to it? I did but it was still throwing the same error. I also checked out my routes file which is fine because post_controller is working fine in development mode.我在这里做错什么?我试图创建创建测试用例方法def setup @user = users(:bob) @p = posts(:one) @post = Post.newendtest 'should create post' do sign_in @user assert_difference('Post.count') do post :create, post: { name: @p.name, value: @p.value}endend我正在获得 ActionController :: ParameterMissing:param丢失或值为空:post 而在我的控制器类中我确实有I am getting ActionController::ParameterMissing: param is missing or the value is empty: post while in my controller class I do have params.require(:post).permit(:name, :value, :user_id)我也有我的 .yml 文件中的所有参数,即I also have all parameters in my .yml file i.e. one: name: 2 value: 3推荐答案 看起来你需要在尝试之前登录e索引动作。您还在测试错误的实例变量名称。您正在测试@posts,但您已在控制器中定义了@post。尝试这个测试代替:It looks like you need to sign in before trying the index action. You're also testing the wrong instance variable name. You're testing @posts, but you've defined @post in the controller. Try this test instead:test 'should get index' do sign_in @user get :index assert_response :success assert_not_nil assigns(:post)end 这篇关于如何运行最小的控制器方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-06 01:03