Rails-Redirect для разных путей на основе ввода формы во время действия create - PullRequest
0 голосов
/ 04 января 2019

У меня есть действие создания в моем контроллере.

 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 голосов
/ 04 января 2019

Попробуйте это:

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)

0 голосов
/ 04 января 2019

Части else вашего оператора if расположены в неправильном порядке. Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...