2015-08-13 2 views
0

Когда пользователь делает запрос на url/mobile в моем приложении Rails, я хотел бы, чтобы параметр автоматически добавлялся к URL-адресу, который загружается после запроса (что-то вроде /mobile?tree_width=5)Ruby on Rails: передать параметры для просмотра

Я пробовал несколько вещей, все из которых не сработали.

Ближайшим я получил это в моем контроллере:

def mobile 
    respond_to do |format| 
     format.html{ 
      # pass tree width here 
      render mobile_project_steps_path(@project, :tree_width => @project.tree_width) 
     }   
    end 
    end 

Я получаю ошибку

Missing template /projects/8/steps/mobile?tree_width=5 

Но я думаю, что этот путь должен существовать, по моим рекам маршрутам:

mobile_project_steps GET  /projects/:project_id/steps/mobile(.:format)     steps#mobile 

Как добавить параметр к URL-адресу с контроллера?

+2

Вы имели в виду 'redirect_to', а не' render'? – BroiSatse

+0

@BroiSatse, если я использую redirect_to, я получаю цикл перенаправления – scientiffic

+1

Поскольку вам нужно условие, напишите ответ за секунду. – BroiSatse

ответ

3

Вам нужно проверить, отсутствует ли парам, и если он перенаправляется на текущее действие с дополнительным параметром. Я бы сжимал его в before_action:

before_action :check_tree_width, only: :mobile 

    def mobile 
    # Your actual logic 
    end 

    private 

    def check_tree_width 
    redirect_to(tree_width: @project.tree_width) unless params[:tree_width].present? 
    end 
+0

спасибо - это сработало! – scientiffic

Смежные вопросы