Вспомогательная функция Rails не работает
Отказ от ответственности: я рельсы N00B. Я играю с простой вспомогательной функцией, которая не делает то, что я хочу.
- У меня есть модель под названием "webform" с несколькими текстовыми полями (имя, адрес и т. Д.)
- Я пытаюсь использовать вспомогательную функцию для проверки оператора if (т.е. 'is:address == '10')
Вот вспомогательная функция
def webforms_helper if :address == 10 print "Address is 10" else print "Address is not 10" end end
В моем представлении 'show' я включил вспомогательную функцию
<%= webforms_helper %>
- Я загружаю веб-приложение, не получаю ошибок - хотя оно не распечатывает "Адрес 10" или "Адрес не 10"
Я также не добился успеха, используя put (и проверяя консоль) вместо print
Какие-нибудь мысли? Извиняюсь за вопрос новичка;)
3 ответа
Во-первых, правильный помощник будет выглядеть так:
module ApplicationHelper
def myformchecker(ahash)
if ahash[:address] == '10'
return 'Address is 10'
end
end
end
Тогда в вашем контроллере:
class ApplicationController < ActionController::Base
helper: application
...
end
Тогда по вашему мнению:
<%= myformchecker(params) %>
Таким образом, если представление было обработано в ответ на отправку формы, и форма имеет следующее:
<%= text_field_tag :address %>
И когда пользователь заполнил форму и поместил строку "10" в качестве адреса, в вашем представлении будет сгенерировано "Address is 10".
Ну, ваше упражнение не очень понятно, но как-то так...
def webforms_helper
if :address == 10
print "Address is 10"
else
print "Address is not 10"
end
end
никогда не будет выводить что-либо в представление Rails по одной причине. Вы используете методы put и print, эти два будут выводиться на консоль. Вы должны вернуть саму строку, сделать это так...
def webforms_helper
if :address == 10
"Address is 10"
else
"Address is not 10"
end
end
Я понимаю, что вы делаете простую демонстрацию, но тем не менее это хорошая идея, чтобы передать аргументы помощнику. Это то, что вы будете делать в 99% случаев..
def webforms_helper(address)
if address == 10
#return something meaningful as string to the view
else
#return something meaningful as string to the view too.
end
end
Вы должны передать информацию помощнику, чтобы он мог принять решение за вас.
# app/views/webforms/show.html.erb
<%= webforms_helper(address) %>
# app/helpers/webform_helper.rb
module WebformHelper
def webforms_helper(address)
if address == 10
"Address is 10"
else
"Address is not 10"
end
end
end
Я также от всей души рекомендую найти хорошую книгу ( Agile Web Development с Rails) или учебник ( Ruby on Rails Tutorial), если вы только начинаете с Rails.