-
一个rails 里 button_to的问题,不知到有人遇到过没有10
之前看过书,不过还是新手,这段时间想动手试试rails的helloworld,于是有了如下问题
我在首页上显示用户的登录, 首页url为 /
然后加入 <%= render 'users/login' %>
相应的 views/users/_login.html.erb如下
<div class="login_field">
<%=label_tag :email%>
<%=email_field_tag :email %>
<%=label_tag :password %>
<%= password_field_tag :password %>
<%=button_to "Log In",:action => 'login',:controller => 'users' %>
</div>
因为目录不是users,所以加了controller,因为action不用标准post的create,所以用了:action
但是生成的表单很奇怪为
<form action="/assets?action=login&controller=users" method="post"...></form>
我不知道这里的/assets是从哪来的,挺奇怪的,debug进去看源码好像是一个url_for方法里出来的
当然这个表单出来没效果的,报的错大概是No route matches [POST] "/assets"
然后我去修改routes.rb ,加了 match 'assets/' => 'users#login'
但是这显然不是一个好的结果,而且这样的话可能其他请求也会被这个controllor代理,同时生成的form的action也指明了action和contriller我觉得这里应该是不用加限制的,原理还不是很明白,有没有高手能解答一下
纯rails新手,求想法而来,我搜了 stack overview没有button_to出这样问题的,然后rails网站里那个guide文档好像也没提到这个事情,因为书里的url基本都是在本身url下的(如user在users目录下),我觉得会不会是因为我url设计不当造成的。
学习阶段,希望能有人能指明这个原因,个人还在摸索。
问题补充
form_for和submit好像挺简单,这里button_to这样的问题一般怎么处理,原因是什么呢?
问题补充chloerei 写道在新版本的 Rails 里,已经没有默认路由,每条路由都需要用资源或者具名路由。LZ 看的书可能是旧版本的,用了 "/:controller/:action/:id" 这个默认路由,新版本没有这个路由,生成的 url 就扔到 assets 去了,这是静态文件夹的地址。
如果 LZ 不能找到更新的书,建议先装旧版的 rails 学习。
gem install rails -v 版本号
我想可能是这个原因,确实:action :controller的用法是一个比较早的书里的内容
但是如你所说,如果用最新的版本的rails的话,“每条路由都需要用资源或者具名路由”,这个路由应该在routes.rb里修改还是在某处增加这个路由信息呢,我看rails 3的API里 :action这个方法还是有的,:controller好像没有这个用法了,但是若需要解决这个问题(在非资源所在url调用该资源方法)应该怎么处理呢?
最新的文档大概是rails网站上的那个guide,里面好像没有相关的信息。
大侠如果有了解的话请不吝赐教。
问题补充乌龙饭 写道也是南京的railser?不错,
给的信息太少了,看不出来,贴出你的首页html以及routes文件看看呢
首页html主要内容就是如下
<%= render "users/login"%>
routes目前没有什么设置就是
resource user
get home/index
root_to home#index
问题补充
非常感谢!我继续看这个guide2012年3月05日 10:57
8个答案 按时间排序 按投票排序
-
http://api.rubyonrails.org/
这个网站中可以看到button_to(name, options = {}, html_options = {}) 使用介绍.
还有通过命令行在工程目录下用rake routes就可以看到所有路由设置了.
资源和非资源一下就可以看出来了.
我也新手学习中....呵呵希望有机会多和大家探讨学习.2012年3月14日 11:42
-
<%=button_to "Log In",{:action => 'login',:controller => 'users'} %>
API中的描述
<%= button_to "New", :action => "new" %>
# => "<form method="post" action="/controller/new" class="button_to">
# <div><input value="New" type="submit" /></div>
# </form>"
<%= button_to "Delete Image", { :action => "delete", :id => @image.id },
:confirm => "Are you sure?", :method => :delete %>
# => "<form method="post" action="/images/delete/1" class="button_to">
# <div>
# <input type="hidden" name="_method" value="delete" />
# <input data-confirm='Are you sure?' value="Delete" type="submit" />
# </div>
# </form>"
button_to(name, options = {}, html_options = {})
也可以参考http://hlee.iteye.com/blog/10509912012年3月10日 08:44
-
斌-黄 写道乌龙饭 写道也是南京的railser?不错,
给的信息太少了,看不出来,贴出你的首页html以及routes文件看看呢
南京有 Ruby 公司么?
有,我所知道的两家:焦点科技,富士通南大2012年3月05日 10:57
-
乌龙饭 写道也是南京的railser?不错,
给的信息太少了,看不出来,贴出你的首页html以及routes文件看看呢
南京有 Ruby 公司么?2012年3月05日 10:57
-
chipmat 写道chloerei 写道在新版本的 Rails 里,已经没有默认路由,每条路由都需要用资源或者具名路由。LZ 看的书可能是旧版本的,用了 "/:controller/:action/:id" 这个默认路由,新版本没有这个路由,生成的 url 就扔到 assets 去了,这是静态文件夹的地址。
如果 LZ 不能找到更新的书,建议先装旧版的 rails 学习。
gem install rails -v 版本号
我想可能是这个原因,确实:action :controller的用法是一个比较早的书里的内容
但是如你所说,如果用最新的版本的rails的话,“每条路由都需要用资源或者具名路由”,这个路由应该在routes.rb里修改还是在某处增加这个路由信息呢,我看rails 3的API里 :action这个方法还是有的,:controller好像没有这个用法了,但是若需要解决这个问题(在非资源所在url调用该资源方法)应该怎么处理呢?
最新的文档大概是rails网站上的那个guide,里面好像没有相关的信息。
大侠如果有了解的话请不吝赐教。
详细的 Routing 规则是在 Guide 里面 http://guides.rubyonrails.org/routing.html
你需要在 config/routes.rb 里面加上路由,由于不是很了解你想映射的路由规则,所以不知道怎么帮你补全,猜想你需要的是
post 'login' => 'users#login'
顶楼还有个问题,button_to 提交的字段仅限 button 带的信息,需要提交几个 filed 的话要用 form_for(form_tag) 和 sumbit(sumbit_tag)配合。2012年3月05日 10:57
-
在新版本的 Rails 里,已经没有默认路由,每条路由都需要用资源或者具名路由。LZ 看的书可能是旧版本的,用了 "/:controller/:action/:id" 这个默认路由,新版本没有这个路由,生成的 url 就扔到 assets 去了,这是静态文件夹的地址。
如果 LZ 不能找到更新的书,建议先装旧版的 rails 学习。
gem install rails -v 版本号
2012年3月05日 10:57
相关推荐
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
7. **文档齐全**:InspiniaAdmin提供了详细的文档和示例代码,有助于开发者快速上手和解决遇到的问题。 在Rails_Full_Version压缩包中,包含了完整的源代码和必要的资源文件,开发者可以通过解压并导入到Rails项目...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它遵循模型-视图-控制器(MVC)的架构模式,设计用来快速开发数据库驱动的动态网页。随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助...
该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分: 1. **静态资源**:CSS样式文件、JavaScript脚本和图像资源。这些文件用于构建用户界面,包括响应式布局、图表、表单元素...
在这个Rails_Seed_Project中,开发者可以找到一个典型的Rails应用结构,包括Gemfile、config.ru、database.yml等核心配置文件,以及models、controllers、views和assets等目录,它们分别对应着业务逻辑、数据操作、...
Rails_Seed_Project则是Inspinia Admin在Rails环境下的一个种子项目,它的主要目的是快速搭建一个具备基本功能的后台管理系统。通过这个项目,开发者可以快速启动一个新的Rails应用,并且拥有一个预配置的后台界面,...
Rails_3_Cheat_Sheets.pdf
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
这个插件库添加了 ActiveRecord 模型,一种在保存时检查:belongs_to关联是否实际存在的方法。 这是通过向基本验证模块添加validates_existence_of器来实现的。 它还支持:allow_nil => true/false 、 :allow_new => ...
InspiniaAdmin 2.5 Rails_full_version
如果匹配到的第一个路由规则是: get '/patients/:id', to: 'patients#show' 那么这个请求就会被派发到Patients控制器的show动作,并将参数'id'设置为17。这使得控制器动作可以在执行操作前接收预期的参数。 资源...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
这本书通过一系列具体的“配方”(Recipes),旨在帮助开发者解决在构建Rails应用过程中遇到的各种问题,提升开发效率。 1. **路由(Routes)**:Rails的路由系统将HTTP请求映射到控制器的动作上,理解路由规则的...
rails_email_preview, 在 Rails 中,预览和编辑应用程序邮件程序模板 Rails 电子邮件预览 使用这里 Rails 引擎在浏览器...电子邮件审阅: 所有电子邮件预览的列表: 代表有两个主题: 一个简单的独立主题,以及使用 Boo