Rails 不使用 scaffold,手动创建登录 遇到问题

douya0808 · 2012年03月30日 · 最后由 help5305fff 回复于 2012年03月31日 · 2598 次阅读

想手动来实现用户登录的功能不使用 scaffold 来加深对 rails 层次的理解,但是遇到瓶颈了求指导:) 我先创建了个表叫做 admins 内容如下 id(主键自增) admin(text) password(text) 1 admin 123

我再 rails generate controller login login 接下来我有了控制器 login: controllers/login.controller.rb 还会生成一个对应模板 index: views/login/login.html.erb

我还把登录的主页也改到了这个 login 页面 root :to => 'login#login'

我还创建了一个模型叫做 admin.rb 代码如下 (照别的复制过来的)

class Admin < ActiveRecord::Base
end

再在控制器中将 admins 表中的内容取出来,代码如下:

class LoginController < ApplicationController
  def login
     @admins=Admin.all

     respond_to do |format|
      format.html # login.html.erb
      format.json { render json: @admins }
    end
  end
end

最后在页面用表单将表中的内容予以展示

<%= form_for(@admins) do |f| %>
<table>
    <% @admins.each do |admin| %>
    <tr>
        <td><%= admin.id%></td>
        <td><%= admin.name%></td>
        <td><%= admin.password%></td>
    </tr>
    <% end %>
</table>
<% end %>

之后访问:问题出现了

Showing C:/Documents and Settings/Administrator/myweb/app/views/login/login.html.erb where line #1 raised: 

undefined method `admin_path' for #<#<Class:0x21c8e38>:0x21c4728>
Extracted source (around line #1): 

1: <%= form_for(@admins) do |f| %>
2: <table>
3:  <% @admins.each do |admin| %>
4:  <tr>

如果我把 login.html.erb 清空,我还可以看到一个空白的页面,但是加上表单内容就会看到以上的错误,所以得知是表单的问题,但是我表单仅仅是把表内的内容予以显示为什么就不对呢?

虽然遇到问题了我也很高兴呀 我包天看了两个礼拜才能写出以上的东西 尽管还报错 哎呀脑子不灵呀哈哈哈

晕 昨天晚上看到一点都没看出来 刚才随手往路由配置了一句话 resources :admins 居然就能进去了 不是说这个是 RESTful 路由么 我没用 scaffold 手动的怎么也得配置路由吗?难道程序不知道该往哪走吗?我了个神

#1 楼 @douya0808

<% @admins.each do |admin| %>
  <%= admin.id %>
  <%= admin.name %>
  <%= admin.password %>
<% end %>

@IchiNiNiIchi我在路由配置里加了句 resources :admins 就好使了 没想到还得配路由 我以为程序知道该往哪走呢

@IchiNiNiIchi你好我想请教下 我在控制器中搜索有没有该帐号密码对应的管理员,参数有两个的情况该如何写呢 @admins=Admin.find(params[:name],params[:password]) 这样?

form_for(@admins)

form_for 不了解你的意图,要把这个 @admins 数组提交到哪里

#5 楼 @douya0808 @admins = Admin.find_by_name_and_password( params[:name], params[;password]) 说真的,建议你看一下书,然后过一遍 guide。

@IchiNiNiIchi 哥其实我也有书 那个敏捷开发的第四本是英文的我只有 CET6 的水平实在是看不懂=.= 于是我买 Ruby on rails 开发学习实录 这回是英文版了 可里面讲的 find 方法的所有示例都只用了一个参数,此时我想用两个参数,于是乎,,,,,我傻眼了=.=求学习建议

#8 楼 @douya0808 我四级 325 分,阅读技术书刊和应试能力没必然关系。

搜了一下你说的那本书,评价很差,买国内书要谨慎。

Web 开发敏捷之道中文第 4 版已经出了 http://book.douban.com/subject/10528446/

#8 楼 @douya0808 我也是新手,英语只有高中水平(高中毕业后就没碰过英语),正看到第四版第三部分关于 Active Record 的部分。你过了六级,应该可以看的懂的。

@Rei 哎呀 走起 来一本 @IchiNiNiIchi 哈哈 你们都技术好 我脑子木 净学外语了

#11 楼 @douya0808 建议你第一次看第二部分购物车应用的时候不要拘泥于细节,快速的过一遍就行

@IchiNiNiIchi 好的 谢谢大家对我的帮助和建议 来一本 走起~

很少使用 rails 带的 form,俺都是直接用 html 写的 form 请求那些

@mouse_lin要是都用 rails 的格式那还能用 DREAMWEAVER 修改了吗 连结构属性都不一样了 哈哈 我今天去试试 不知道别人都怎么弄的

#15 楼 @douya0808 它最后解释过去也是 html 而已,用 dreamweaver 不会令代码可读性很差么?

匿名 #17 2012年03月31日

嘎嘎,楼主,如果你能找到一个会 ror 的人,给你讲 1 个小时,你就可以入门了。。。这或许是最快的方法。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号