iteye_13890 2009-07-16 14:46
浏览 272
已采纳

JRuby on Rails 项目打包后发布到tomcat路径问题

使用JRuby on Rails开发的项目打包后部署到tomcat下,路径有问题,
因为JRuby on Rails访问只需要进入该目录启动服务器,访问http://localhost:3000即可,但是发布到tomcat下要通过http://localhost:8080/demo加上工程名字才能访问
现在遇到了问题
比如我首页有个所有产品products,现在我点首页的所有产品他就会跳到[color=green]http://localhost:8080/products[/color]而无法正常访问,在tomcat下正确访问应该是 [color=green]http://localhost:8080/demo/products[/color],不会要在所有的路径前面都加上工程名字吧!我想请问一下各位有什么好的解决方法没有?
[b]问题补充:[/b]
谢谢各位的回答,路径问题部分解决了,但是产品的图片显示不出来,在取出图片的时候该如何解决
[b]问题补充:[/b]
谢谢,mccxj
是这样的我获得图片是自己在模型中写的一个方法

[color=olive] def product_image(style = :normal)
unless self.image_url.blank?
if style == :normal
"\"#{self.name}\""
elsif style == :small
"\"#{self.name}\""
elsif style == :thumb
"\"#{self.name}\""
end
else
"\"暂无图片\""
end
end[/color]
视图中
[color=olive]<%=link_to product.product_image(:small), product %>[/color]
请问我该怎么改才能正确访问路径呢?不会要在模型中加一个死的项目名吧
[b]问题补充:[/b]
谢谢,mccxj的回答,不过调用根目录是用root_url!现在有个问题我想问一下我这段代码 [color=olive]
<% form_tag "/products/search", :method => 'get', :style => "_position:relative; top:5px;" do %>[/color]
应该如何使用rails的help方法!我这样该的 [color=olive]
<% form_tag :url =>{ :controller => "prodcuts", :action => "search"}, :method => 'get',:style => "_position:relative; top:5px;" do %>[/color]可是不对,请问一下应该怎么改!
[b]问题补充:[/b]
刚刚写错了,是这样的
[color=red] <% form_tag :url =>{ :controller => "products", :action => "search"}, :method => 'get',:style => "_position:relative; top:5px;" do %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "搜" %>
<% end %>[/color]
[b]问题补充:[/b]
本来这样是这样的
[color=red] <% form_tag "/products/search", :method => 'get', :style => "_position:relative; top:5px;" do %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "搜" %>
<% end %>[/color]
[b]问题补充:[/b]
to qichunren ,我一直在问路径问题啊?不过我还是把分给你了!

  • 写回答

7条回答 默认 最新

  • qichunren 2009-07-23 20:24
    关注

    [code="ruby"]
    <% form_tag url_for(:controller => "products", :action => "search"), :method => 'get',:style => "_position:relative; top:5px;" do %>
    <%= text_field_tag :q, params[:q] %>
    <%= submit_tag "搜" %>
    <% end %>
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • smile_everyday365 2009-07-16 17:26
    关注

    你页面上是怎么写的啊?是不是没有严格的用rails中的用rails中的生成方式

    评论
  • qichunren 2009-07-16 17:44
    关注

    你直接 把路径写死了,当然不得行啦。
    比如说你不能使用首页

    ,而应该使用<%=link_to "首页", {:controller => 'home'}%>像这样,

    也就是说一切的url都应该以 rails的路由系统来生成。不在直接写成字符串写死了,不是动态的,那样就会出你所说的问题。 :D :D :D :D

    评论
  • qichunren 2009-07-18 15:28
    关注

    你说的图片问题是什么意思哦?

    评论
  • 「已注销」 2009-07-20 01:35
    关注

    这个很简单啦,部署到tomcat的子目录在项目都弄过很多次了。如果使用rails的help方法的话,就没有问题的,例如link_to ,image_tag,什么的都是会正常的。
    如果你的图片是用绝对路径的话,例如/images/hello.jpg,这样当然是不可以的啦。。只能用<%= request.relative_url_root %>/images/hello.jpg来解决。。其实我们在实践过程中很少发现需要这么弄的,像上面的图片使用image_tag("hello.jpg")就可以了。

    评论
  • 「已注销」 2009-07-21 19:34
    关注

    在项目中写死路径的做法我们也做过,不过其实不用这样弄的。。

    看上去,那段代码不应该放到模型里边的,这个方法跟视图关联更紧密,应该放到helper里边的吧。。变成
    def product_image(product,style = :normal) ,只是把product作为一个参数场地进去就好了,这样就可以调用到request.relative_url_root了,你说是不是?

    评论
  • qichunren 2009-07-23 20:23
    关注

    你这人啊,都要问几个问题啊?

    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥30 单片机实验pc软件完全,可以私我商议
  • ¥15 用keil调试程序保证结果进行led相关闪烁
  • ¥15 paddle训练自己的数据loss降不下去
  • ¥20 用matlab的pdetool解决以下三个问题
  • ¥15 单个福来轮的平衡与侧向滑动是如何做到的?
  • ¥15 嵌入式Linux固件,能直接告诉我crc32校验的区域在哪不,内核的校验我已经找到了,uboot没有
  • ¥20 h3c静态路要求有详细过程
  • ¥15 调制识别中输入为时频图,星座图,眼图等
  • ¥15 数据结构C++的循环、随机数问题
  • ¥15 用sendmessage函数把第三方软件窗体隐藏 会什么再次运行第三方软件时 无法再隐藏了