2016-06-14 4 views
6

Есть ли разница в написании return render 'edit' и render 'edit' and return? Безопасны ли оба синтаксиса?"return render" vs "render ... and return" in Rails

Синтаксис return render немного более лаконичен, но официально render and return здесь Avoiding Double Render Errors.

return render вернет любое значение, возвращаемое методом рендеринга, и render and return вернет nil из метода контроллера.

+0

другой сложной задачей является использование «рендеринга и возврата», не делайте «render && return», хотя ваш Rubocop может не понравиться. – LYu

ответ

8

Вы ответили на ваш вопрос в конце:

возвращение рендеринга будет возвращать любое значение, рендер метод возврата и визуализации и возвращение будет возвращать ноль из метода контроллера

важная вещь что вы : return - это предотвращает запуск любого другого кода в действии контроллера, что защищает вас от двойных ошибок визуализации. Я не считаю, что что-то действительно слушает возвращаемое значение действий контроллера.

Если бы мне пришлось угадать, почему предпочтительный метод and return Я бы сказал, что он читается как проза, которая является рубиновым способом. То есть это звучит как предложение «Render category and return», а не «категории рендеринга рендеринга»

2

Все методы в Ruby возвращают результат, связанный с линией последнего метода. Если вы хотите, чтобы вернуть результат, не дожидаясь весь метод, вы можете вернуть значение с ключевым словом return

Пример:

def hello1 
    'I m first' # executes 
    'I m second' # result 
end 

def hello2 
    return 'I m first' # result 
    'I m second' # this line will be never executeed 
end 

puts hello1 
# => 'I m second' 
puts hellow 
# => 'I'm first' 

И метод render действует так же, как

Но render метод написан как результат (но результат - true), таким образом вы можете только return после render позвонить по телефону