Я использую mobile_detection в приложении rails 3, чтобы обслуживать отдельные страницы для мобильных пользователей. Я делаю свое тестирование через пользовательский агент в Safari. Проблема заключается в одном из моих процессов, rails отправляет другой URL-адрес в строку URL-адреса веб-браузера, чем на странице, которую он загружает. Поэтому, если я обновляю страницу, она пытается перейти к неправильному URL-адресу, который он помещает в веб-панель.Rails - отображаемый URL-адрес отличается от загрузки страницы
Вот этот процесс.
- Пользователь подает заявку на участие.
- Контроллер участия сохраняет запись, а затем отображает либо мобильную, либо html-версию Team # Candidate.
Вот журнал сервера для процесса с некоторыми из исключенных деталей.
Started POST "/participations" for 127.0.0.1 at 2013-07-20 00:14:37 -0400
Processing by ParticipationsController#create as HTML
...Commits to DB
Redirected to http://localhost:3000/teams/57/candidate
Started GET "/teams/57/candidate" for 127.0.0.1 at 2013-07-20 00:14:37 -0400
Processing by TeamsController#candidate as HTML
Rendered teams/candidate.mobile.erb within layouts/application (34.9ms)
Когда я запускаю тот же процесс с рабочего стола, ошибка не возникает. Как летом проблема:
- Rails загружает команды/сайт кандидата.mobile.erb.
- Однако URL бар после загрузки страницы дисплеев/участия
Это не происходит с рабочим стола.
Ниже приведен список участников. Он имеет несколько сложную логику, но по сути он обнаруживает, что запись уже создана, и делает что-то другое для этого случая, а также для мобильного.
Защиту создать @participation = Participation.new (Params [: участие]) @team = @ participation.team
respond_to do |format|
if @participation.save
if mobile_device?
format.mobile {redirect_to candidate_team_path(@team), notice: 'You have joined the team!'}
else
format.html { redirect_to candidate_team_path(@team), notice: 'You have successfully joined the team.' }
end
else
if @participation.team_id.nil?
format.mobile { redirect_to :back, notice: 'No team was joined.' }
format.html { redirect_to :back, notice: 'No team was joined.' }
format.json { render json: @participation.errors, status: :unprocessable_entity }
else
if mobile_device?
format.mobile {redirect_to candidate_team_path(@team), notice: 'Welcome back.'}
else
format.html {redirect_to candidate_team_path(@team), notice: 'Welcome back.'}
end
end
end
end
конец