2016-05-19 4 views
1

Я ищу для получения параметров на страницах Haml. Я был успешным для передачи параметров по ссылке, какruby ​​on rails получить параметры

https://quickrent-akki4141-1.c9users.io/user_history?name=Akshay

Теперь я хочу, чтобы имя «Акшай» в переменной.

Может ли кто-нибудь помочь мне в этом.

Спасибо

ответ

0

params[:name] будет иметь значение, которое вы хотите. Но вы должны пересмотреть «обработку» этого значения в представлении. Обычно обработка параметров выполняется на контроллере, поскольку является частью запроса.

<%= params[:name] %> 
+0

Что вы думаете о моем подходе «сеанс»? Хорошо для передачи данных? – Cyzanfar

+0

Это зависит от того, где вы хотите передавать данные, в этом случае нет необходимости сохранять данные по запросам. – Leito

+0

Чем вы это сделали –

0

Я думаю, лучше всего было бы создать помощник, который будет обрабатывать, что:

module ParamsHelper 
    def name 
    sanitize(params[:name]) 
    end 
end 

Тогда в представлении

ParamsHelper.name 

Или вы можете «включить» помощник в контроллере от

helper ParamsHelper 

и просто использовать = nam е в представлении

+0

'params' доступен для просмотра, нет необходимости назначать его переменной экземпляра. – Leito

+0

@ Leito право, спасибо!Пришел с лучшим решением, я думаю, – Leaf

0

Для захвата параметра вы проходящие в URL, вы должны объявить метод в вас application_controller.rb файл следующим образом:

class ApplicationController < ActionController::Base 


      def capture_name 
       session[:name] = params[:name] if params[:name] 
       # then do whatever you want like assigning it to a variable if  that's what you are trying to acheive 
      end 
end 
+0

После этого, как я могу отобразить значение на странице haml? –

+0

присвойте ему переменную типа '@name = session [: name]' и используйте переменную '@ name' в вашем представлении. – Cyzanfar

+0

Зачем использовать сеанс? 'params' уже доступен в представлении. – Leito

1

ОСТОРОЖЕН! Хотя существующие ответы будут технически работать, все они представляют собой огромный риск для безопасности. Если вы только что прямо отображать параметр строки запроса на странице вы откроете сайт для всех видов атак сценариев междоменного сайта, включая, но не ограничиваясь

  1. Кража Cookies (и, следовательно, возможные пользовательские сессии)
  2. Произвольное зло Javascript работает на вашей странице
  3. Использование JavaScript для управления DOM

http://www.acunetix.com/websitesecurity/cross-site-scripting/

в самом LEA вам необходимо продезинфицировать входные данные javascript, html и т. д. Чтобы быть в полной безопасности, вы должны следовать всем этим правилам https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

Я думаю, вам действительно нужно оценить ПОЧЕМУ вы это делаете. Основываясь на вашем URL-адресе, похоже, что вы делаете ввод пользователя, делая активный поиск записей на основе имени пользователя, а затем на странице, отображающей имя пользователя и историю этого пользователя? Если это случай, то, скорее всего, данные активной модели записи, в которую вы вернетесь, также будут содержать это имя пользователя. Если это так, вы можете использовать это в своем представлении.

+0

Я не думаю, что существует риск для безопасности. Никакой скрипт не хранится пользователем и не выполняется другим пользователем. Как пользователь (пользователь запускает это и «вводит код на страницу»), вы всегда можете сделать это из инструментов разработчика браузера, все три: прочитайте файлы cookie, запустите JS на странице, манипулируйте DOM. – Leito

+0

Я мог бы дать вам ссылку на мою страницу истории пользователя, но на самом деле поставить javascript в параметре строки запроса и замаскировать ссылку, чтобы вы не увидели, что она собирается делать плохие вещи. Затем я получаю все ваши файлы cookie. Если я могу как-то сохранить свое имя пользователя как-то злонамеренно, то любая кнопка, генерирующая эту ссылку, будет автоматически злонамеренной. Это текстовая скриптовая сценария для текстовых книг –

+0

Спасибо, я не видел этого, но вы правы, я бы не назвал это учебником, но да, конечно, возможно. Кажется, что ERB, HAML и SLIM избегают по умолчанию, поэтому это не должно быть проблемой. – Leito

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