Postado em 17 jun 2009
Categoria(s) Ruby
No PHP existe a função isset ela é muito interessante para testar se uma variável existe, ela retorna true caso exista e false caso contrário.
Por exemplo:
1
2
3
4
5
6
7
8
| public function cleanAttributes($params)
{
if (isset($params['title'])) {
$params['title'] = strip_tags($params['title']);
}
return $params;
} |
No Ruby você pode fazer o mesmo usando o operador defined?.
Por exemplo:
1
2
3
4
5
6
7
8
9
| def clean_attributes(params)
if defined?(params['title'])
if !params['title'].nil?
params['title'] = params['title'].strip_tags
end
end
return params
end |
Se você gostou desse texto e acha que ajudou você, me recomende:
.
Tags:
cleanAttributes,
clean_attributes,
def,
defined?,
end,
exemplo,
existe,
false,
função,
function,
if,
isset,
nil,
params,
PHP,
public,
return,
Ruby,
similar,
strip_tags,
true,
variável,
verificar
Estou desenvolvendo uma aplicação em rails, hoje surgiu a necessidade de criar a navegação por breadcrumb. Fui atrás para ver o que já existia em Rails, infelizmente encontrei algumas coisas complexas e estourando o escopo da minha minha necessidade. Na verdade o que eu precisava era criar links e algumas vezes somente aparecer o texto sem link no breadcrumb.
Em vez de perder um tempão na internet fuçando, decidi fazer um helper para gerar o breadcrumb conforme a minha necessidade.
Fiz o seguinte, no application_helper.rb criei o método breadcrumb:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| # Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
def breadcrumb(array)
output = '
<div class="breadcrumb">'
size = array.size - 1
array.each {
|e| e.each {
|key, value|
if value.empty?
output += key
else
output += link_to(key, value)
end
output += " > " if size > 0
}
size -= 1
}
output += '</div>
'
return output
end
end |
No meu template eu chamo o helper breadcrumb passando um array e em cada posição do array um hash separado pela chave e valor, onde a chave é o texto e o valor é o link. Caso no valor eu passe uma string vazia ”, apenas é colocado o texto no breadcrumb.
Exemplo no template show.rhtml:
1
| <%= breadcrumb([{ 'Home' => home_url }, { 'Notícias' => url_for(:controller => :histories) }, { @history.title => '' }]) %> |
Que vai gerar o seguinte html:
1
| <a href="http://localhost:3000/">Home</a> > <a href="/histories">Notícias</a> > Governo Federal qualifica a gestão da área de Tecnologia da Informação |
Outro exemplo mais simples:
1
2
3
| <%= breadcrumb([{ 'Home' => 'http://patrickespake.wordpress.com' }, { 'Tags' => 'http://patrickespake.wordpress.com/tags') }, { 'Ruby on Rails' => '' }]) %>
<%= breadcrumb([{ 'Home' => 'http://patrickespake.wordpress.com' }, { 'Tags' => 'http://patrickespake.wordpress.com/tags') }]) %> |
Se você gostou desse texto e acha que ajudou você, me recomende:
.
Tags:
aplicação,
app,
application_helper.rb,
array,
breadcrumb,
dev,
each,
hash,
helper,
html,
if,
key,
link_to,
output,
rails,
return,
Ruby,
Ruby on Rails,
show,
size,
sourcecode,
value
Postado em 02 dez 2008
Categoria(s) Symfony
Esses tempos estava usando o object_select_tag (é uma mão na roda), mas precisava trazer os resultados em ordem crescente. Foi ae que eu descobri que existe uma opção peer_method onde é possível definir o método no model para retornar a lista de resultados.
Eu não curto o Propel, prefiro bem mais o Doctrine. Desta forma esse exemplo é baseado usando o Doctrine:
No template:
1
2
3
4
5
6
7
| <?php echo object_select_tag(isset($filters['Status']) ? $filters['Status'] : null, null, array (
'include_blank' => true,
'related_class' => 'Status',
'text_method' => '__toString',
'control_name' => 'filters[Status]',
'peer_method' => 'getSorted'
)) ?> |
No model StatusTable.class.php:
1
2
3
4
5
6
7
| public static function getSorted()
{
$q = new Doctrine_Query();
$q->from('Status')->orderBy('name ASC');
return $q->execute();
} |
No código acima que é possível definir a forma de ordenação e qual coluna que deve ser usada para ordenar.
Agora falta criar o método __toString no model Status.class.php:
1
2
3
4
| public function __toString()
{
return $this->name;
} |
O método __toString e usado para imprimir os valores no combo box.
Pronto! ;-)
Tags:
array,
asc,
class,
control_name,
doctrie_query,
Doctrine,
echo,
from,
getSorted,
include_blank,
isset,
method,
método,
model,
new,
null,
object_select_tag,
order,
orderBy,
peer_method,
PHP,
Propel,
related_class,
return,
sourcecode,
status,
Symfony,
table,
text_method,
this,
__toString