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

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

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

    打赏 评论
  • 小毛1983 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")就可以了。

    打赏 评论
  • 小毛1983 2009-07-21 19:34

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

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

    打赏 评论
  • qichunren 2009-07-23 20:23

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

    打赏 评论

相关推荐 更多相似问题