Rails-根据创建操作期间的表单输入重定向到不同路径

时间:2019-01-04 15:10:56

标签: ruby-on-rails

我的控制器中有一个create动作。

 def create

        @client=Client.find(params[:client_id])
        @comment= @client.build_comment( comment_params )
        if @comment.save

        flash[:success]= "Thank you!"
        redirect_to path_one
        else
            render action: :new
        end

    end
        private
        def comment_params
            params.require(:comment).permit(:response, :experience)
        end

现在,在我的创建操作中,每当客户提交表单时,我都希望能够根据“体验”的值重定向到其他路径。

所以,如果经验是“积极的”,我希望他们去path_one,如果经验是“消极的”,我希望他们去path_two。

我尝试过:

def create

        @client=Client.find(params[:client_id])
        @comment= @client.build_comment( comment_params )
        if @comment.save
             if params[:experience]=="positive"

                  flash[:success]= "Thank you!"
                  redirect_to path_one
                  else
                  render action: :new
             else
             redirect_to path_two
        end
        end 
end
        private
        def comment_params
            params.require(:comment).permit(:response, :experience)
        end

但这总是重定向到同一路径。

2 个答案:

答案 0 :(得分:0)

if语句的else部分顺序错误。试试这个:

if @comment.save
  if params[:experience]=="positive"
    flash[:success]= "Thank you!"
    redirect_to path_one
  else
    redirect_to path_two
  end
else
  render action: :new
end

答案 1 :(得分:0)

尝试一下:

if @comment.save
  if comment_params[:experience]=="positive"
    flash[:success]= "Thank you!"
    redirect_to path_one
  else
    redirect_to path_two
  end
else
  render action: :new
end

现场经验不是在params内部,而是在params [:comment]内部(或者在本例中,在comment_params方法内部)