Devemos usar algo além de image-url
e outros no Rails 4? Eles retornam valores diferentes que não parecem fazer sentido. Se eu tiver logo.png
em /app/assets/images/logo.png
e eu faço o seguinte, isso é o que eu recebo:
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
Claro que nenhum desses funcionam porque eles precisam pelo menos /assets
na frente.
ATUALIZAÇÃO : Na verdade, acabei de notar, como faço para acessar as imagens no Rails 4? Eu tenho uma imagem em/app/assets/images/logo.png
. Mas se eu for para qualquer um dos seguintes URLs, ainda não vejo minha imagem:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
ATUALIZAÇÃO 2 : A única maneira de abrir o meulogo.png
é movendo-o para o/app/assets/stylesheets
diretório e puxando para cima:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
arquivo ou em um.css.scss
arquivo?.css.scss
arquivoRespostas:
Eu só tive esse problema. 3 pontos que espero ajudar:
app/assets/images
diretório, poderá chamar a imagem diretamente, sem prefixo no caminho. ie.image_url('logo.png')
background-image:
propriedade, sua linha de código deve serbackground-image: image-url('logo.png')
. Isso funciona para as folhas de estilo menos e sass. Se você estiver usando inline na visualização, precisará usar oimage_tag
helper embutido no rails para gerar sua imagem. Mais uma vez, sem prefixo<%= image_tag 'logo.png' %>
rake assets:precompile
para gerar seus ativos ourake assets:precompile RAILS_ENV=production
para produção, caso contrário, seu ambiente de produção não terá os ativos de impressão digital ao carregar a página.Também para os comandos do ponto 3, você precisará prefixá-los com
bundle exec
se estiver executando o bundler.fonte
Sua primeira formulação,,
image_url('logo.png')
está correta. Se a imagem for encontrada, ela gerará o caminho/assets/logo.png
(mais um hash na produção). Porém, se o Rails não conseguir encontrar a imagem que você nomeou, ela retornará/images/logo.png
.A próxima questão é: por que Rails não está encontrando sua imagem? Se você colocá-lo em app / assets / images / logo.png, poderá acessá-lo indo para
http://localhost:3000/assets/logo.png
.Se funcionar, mas seu CSS não estiver sendo atualizado, pode ser necessário limpar o cache. Exclua
tmp/cache/assets
do diretório do projeto e reinicie o servidor (webrick, etc.).Se isso falhar, você também pode tentar usar apenas
background-image: url(logo.png);
Isso fará com que seu CSS procure por arquivos com o mesmo caminho relativo (que neste caso é / assets).fonte
Acabei de descobrir que usando o
asset_url
helper você resolve esse problema.fonte
undefined local variable or method 'image'
erro.asset_path("<your_path>", type: :image)
Tive um problema semelhante ao tentar adicionar uma imagem de fundo com css embutido. Não há necessidade de especificar a pasta de imagens devido à forma como a sincronização de ativos funciona.
Isso funcionou para mim:
fonte
assets/img.jpg
ou../assets/img.jpg
que obviamente não funciona em nenhum diretório./assets/img.jpg
faz. TYO Rails 4.0.0 terá a aparência definida
image-url
na mesma estrutura de diretório do seu arquivo css.Por exemplo, se o seu css em
assets/stylesheets/main.css.scss
,image-url('logo.png')
se tornaurl(/assets/logo.png)
.Se você mover o arquivo css para
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
torna-se/assets/cpanel/logo.png
.Se você quiser usar a imagem diretamente no diretório de ativos / imagens, você pode usar
asset-url('logo.png')
fonte
para folhas de estilo: url (asset_path ('image.jpg'))
fonte
url(asset_path('image.jpg')
,url('image.jpg')
eimage-url('image.jpg')
? Estou trabalhando com Rails 5.0.0.1 eurl()
funciona bem em arquivos SCSS e em arquivos html.erb que uso,asset_path()
então gostaria de saber o caminho correto a seguir. Desde já, obrigado.asset_path
adicione ao arquivo de imagem um apêndice de resumo. Na verdade, é para produção; após cada implantação, o apêndice de um resumo será alterado e o navegador do usuário fará o download da nova versão das imagens.