Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

My css assets URL suddenly changes in different pages using rails

I load a css by using assets stylesheet. However it only loads in index. when i used f12 the console shows the URL for other pages other than index. adds /cloths iam using the default layout which is application.html.erb

route.rb

Rails.application.routes.draw do
  resources :categories
  resources :cloths 
end

cloths_controller.rb

class ClothsController < ApplicationController
  before_action :set_cloth, only: [:show, :edit, :update, :destroy]


  # GET /cloths
  # GET /cloths.json
  def index
    @cloths = Cloth.all
    @categories = Category.all 
  end

  # GET /cloths/1
  # GET /cloths/1.json
  def show
    @cloths = Cloth.all
    @comments = Comment.where("cloth_id = ?", @cloth.id)
    @comments = Comment.paginate(:page => params[:page], :per_page => 3)
  end

  # GET /cloths/new
  def new
    @cloth = Cloth.new
    @categories = Category.all 
    respond_to do|format|
      format.html #new.html.erb
      format.xml{render :xml=>@recipe}
      end
    end

  # GET /cloths/1/edit
  def edit
  end

  # POST /cloths
  # POST /cloths.json
  def create
    @cloth = Cloth.new(cloth_params)

    respond_to do |format|
      if @cloth.save
        format.html { redirect_to @cloth, notice: 'Cloth was successfully created.' }
        format.json { render :show, status: :created, location: @cloth }
      else
        format.html { render :new }
        format.json { render json: @cloth.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /cloths/1
  # PATCH/PUT /cloths/1.json
  def update
    respond_to do |format|
      if @cloth.update(cloth_params)
        format.html { redirect_to @cloth, notice: 'Cloth was successfully updated.' }
        format.json { render :show, status: :ok, location: @cloth }
      else
        format.html { render :edit }
        format.json { render json: @cloth.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /cloths/1
  # DELETE /cloths/1.json
  def destroy
    @cloth.destroy
    respond_to do |format|
      format.html { redirect_to cloths_url, notice: 'Cloth was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  def men
  end


#PRIVATE
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_cloth
      @cloth = Cloth.find(params[:id])
    end
    def cloth_params
      params.require(:cloth).permit(:title, :category_id, :description)
    end

end

application.html.erb

<!DOCTYPE HTML>
<html>
<head>
<title>Batik</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link href="assets/bootstrap.css" rel='stylesheet' type='text/css' />
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/simpleCart.min.js"> </script>
<script src="assets/jquery.min.js"></script>
<!-- Custom Theme files -->
<link href="assets/style.css" rel='stylesheet' type='text/css' />
<!-- Custom Theme files -->
<!--webfont-->
<link href='http://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700,800,900' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Audiowide' rel='stylesheet' type='text/css'>
<script src="assets/jquery.easydropdown.js"></script>
<!-- Add fancyBox main JS and CSS files -->
<script src="assets/jquery.magnific-popup.js" type="text/javascript"></script>
<link href="assets/magnific-popup.css" rel="stylesheet" type="text/css">
    <script>
      $(document).ready(function() {
        $('.popup-with-zoom-anim').magnificPopup({
          type: 'inline',
          fixedContentPos: false,
          fixedBgPos: true,
          overflowY: 'auto',
          closeBtnInside: true,
          preloader: false,
          midClick: true,
          removalDelay: 300,
          mainClass: 'my-mfp-zoom-in'
      });
    });
    </script>
</head>
<body>



    <%#=debug(session)%>
    <%= yield %>
 <!--Footer-->
<div class="container">
      <div class="brands">
       <ul class="brand_icons">
        <li><img src='assets/icon1.jpg' class="img-responsive" alt=""/></li>
        <li><img src='assets/icon2.jpg' class="img-responsive" alt=""/></li>
        <li><img src='assets/icon3.jpg' class="img-responsive" alt=""/></li>
        <li><img src='assets/icon4.jpg' class="img-responsive" alt=""/></li>
        <li><img src='assets/icon5.jpg' class="img-responsive" alt=""/></li>
        <li><img src='assets/icon6.jpg' class="img-responsive" alt=""/></li>
        <li class="last"><img src='assets/icon7.jpg' class="img-responsive" alt=""/></li>
       </ul>
       </div>
      </div>
      <div class="container">
        <div class="instagram_top">
          <div class="instagram text-center">
        <h3><i class="insta_icon"> </i> Instagram feed:&nbsp;<span class="small">#Surfhouse</span></h3>
      </div>
          <ul class="instagram_grid">
        <li><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i1.jpg" class="img-responsive"alt=""/></a></li>
        <li><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i2.jpg" class="img-responsive" alt=""/></a></li>
        <li><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i3.jpg" class="img-responsive" alt=""/></a></li>
        <li><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i4.jpg" class="img-responsive" alt=""/></a></li>
        <li><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i5.jpg" class="img-responsive" alt=""/></a></li>
        <li class="last_instagram"><a class="popup-with-zoom-anim" href="#small-dialog1"><img src="assets/i6.jpg" class="img-responsive" alt=""/></a></li>
        <div class="clearfix"></div>
        <div id="small-dialog1" class="mfp-hide">
        <div class="pop_up">
          <h4>A Sample Photo Stream</h4>
          <img src="assets/i_zoom.jpg" class="img-responsive" alt=""/>
        </div>
        </div>
      </ul>
      </div>
        <ul class="footer_social">
      <li><a href="#"> <i class="fb"> </i> </a></li>
      <li><a href="#"><i class="tw"> </i> </a></li>
      <li><a href="#"><i class="pin"> </i> </a></li>
      <div class="clearfix"></div>
       </ul>
      </div>
     </div>

</body>
</html>

Everything works fine on Index.html but in show, edit and add all of the asset url becomes different. like this

GET http://localhost:3000/cloths/assets/bootstrap.css (404 could not found)

why does the URL suddenly change to "/cloths/assets" instead of just "/assets"

like image 918
Fuyu KuKie Avatar asked Apr 18 '16 04:04

Fuyu KuKie


1 Answers

you need to add config.assets.paths << Rails.root.join('app', 'assets', 'cloths') to your config/application.rb to make cloths/assets accessible from /assets on your applicaion

like image 107
sa77 Avatar answered Nov 06 '22 02:11

sa77