`

Rails之Controller&View

 
阅读更多

用rails提供的工具创建controller,同时生成view文件以及测试文件 

root$ script/generate controller news list detail
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/news
      exists  test/functional/
      exists  test/unit/helpers/
      create  app/controllers/news_controller.rb
      create  test/functional/news_controller_test.rb
      create  app/helpers/news_helper.rb
      create  test/unit/helpers/news_helper_test.rb
      create  app/views/news/list.html.erb
      create  app/views/news/detail.html.erb

配置路由如下

vi config/routes.rb
  map.connect ':controller/:action'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

编辑controller如下

root$ cat app/controllers/news_controller.rb 
class NewsController < ApplicationController
  def list
    @newslist = [{"title"=>"new1","content"=>"text1"},{"title"=>"new2","content"=>"text2"}]
  end

  def detail
    id ||= params[:id]
    name ||=params[:name]
    @title = "new"+id + name
    @content = "text"+id + name
  end
end

编辑view模板如下

root$ cat app/views/news/list.html.erb 
<h1>News#list</h1>
<p>Find me in app/views/news/list.html.erb</p>
<% @newslist.each do |news| %>
<p><%= news["title"] %></p>
<% end %>
root$ cat app/views/news/detail.html.erb 
<h1><%= @title %></h1>
<p><%= @content %></p>

可以通过如下链接发起请求

http://127.0.0.1:3000/news/list
http://127.0.0.1:3000/news/detail/1?name=ciaos
http://127.0.0.1:3000/news/detail?id=1&name=ciaos

可以通过下面的方法在view中实现controller的调用

#调用自身controller的其他action方法
<%= link_to "self_controller.otheraction", "otheraction" %>
#调用别的controller的action方法
<%= link_to "another_controller.action", "/another_controller/action" %>
#链接别的链接
<%= link_to "other sites", "http://www.baidu.com" %>

<%= link_to "link1", :action => "action", :id=> 3 %>
#http://127.0.0.1:3000/loc/act?id=3
<%= link_to "link2", :controller => "con", :action => "act", :page=> 3 %>
#http://127.0.0.1:3000/con/act?page=3
<%= link_to "link3", :controller => "con", :action => "act", :id=> 3, :page=>4 %>
#http://127.0.0.1:3000/con/act?id=3&page=4

在controller中配置自定义模板layout "standardLayout",模板会自动加载目录下所有css和js文件,如果需要加载指定文件可以按照如下方法

  <%= stylesheet_link_tag    "kangli/style", "kangli/custom" %>
  <%= javascript_include_tag "jquery", "jquery_ujs", "kangli" %>

 此外controller的render以及redirect使用示例如下

class TestController < ApplicationController
	def index
		@user = {:name=>params[:name]}
		render :text => @user
=begin
		{:name=>:ciaos}
=end
		#render :xml => @user.to_xml
=begin
		<?xml version="1.0" encoding="UTF-8"?>
		<hash>
			<name type="symbol">ciaos</name>
		</hash>
=end 
		#render :json => @user.to_json
=begin
		{"name":"ciaos"}
=end
		#render :nothing => true
		/empty/
	end
	
	def show
		
		#redirect_to :action => "index", :name => params[:name] #, :age => 26 , ...
		
		redirect_to :controller => "main", :action => "index" #, :para => "ciaos"
		
		#redirect_to :back
		/go to previous page/
	end
end

 参照 http://ihower.tw/rails3/actioncontroller.html

 Rails內建支持HTTP Basic Authenticate,简单实现验证

class PostsController < ApplicationController
    before_filter :authenticate

    protected

    def authenticate
     authenticate_or_request_with_http_basic do |username, password|
       username == "foo" && password == "bar"
     end
    end
end
分享到:
评论

相关推荐

    Rails3常用命令行命令

    Rails的scaffold命令是一个强大的工具,可以快速生成一套完整的CRUD(Create, Read, Update, Delete)界面,包括Model、View和Controller。例如,创建一个名为Person的资源: ```bash rails g scaffold person name...

    rails-controller-testing:将`assigns`和`assert_template`带回到您的Rails测试中

    Rails :: Controller :: Testing 这个gem将assigns给控制器测试的内容以及assert_template带回assigns控制器和集成测试的内容。 这些方法已中。 安装 将此行添加到您的应用程序的... [ :controller , :view , :re

    rails2.3.2

    Ruby on Rails(通常简称为 Rails)是一个基于 Ruby 语言的开源 Web 应用程序框架,它遵循 Model-View-Controller (MVC) 设计模式,用于构建数据库驱动的 Web 应用程序。Rails 强调“约定优于配置”(Convention ...

    Rails 101S

    - **MVC架构与RESTful概念**:介绍模型(Model)、视图(View)、控制器(Controller)三者之间的关系以及RESTful API的设计原则。 - **深入解析Controller & Model**:进一步探讨Controller和Model的工作原理,理解如何...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    提升Ruby on Rails性能的几个解决方案

    简介 Ruby On Rails 框架自它提出之日...Rails 是一个真正彻底的 MVC(Model-View-Controller) 框架,Rails 清楚地将你的模型的代码与你的控制器的应用逻辑从 View 代码中分离出来。Rails 开发人员很少或者可能从未遇到

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    Ruby on Rails实例开发

    在本实例开发中,我们将探讨如何使用Rails进行实际的Web应用构建,同时涉及与之相关的技术,如SQLite数据库、HTML和CSS。 首先,Ruby是Rails的基础,它是一种动态类型的、面向对象的编程语言,以其简洁和表达性强的...

    rails2-sample

    此外,Rails还内置了许多实用功能,如ActiveRecord(用于数据库交互)、Action View(用于页面渲染)和Action Controller(用于处理用户请求),这些都使得开发者能够快速构建出功能丰富的Web应用程序。 #### 2. ...

    web开发之rails最新调试通过购物车代码

    在Web开发领域,Ruby on Rails(简称Rails)是一种流行的开源框架,它基于MVC(Model-View-Controller)架构模式,用于快速构建高效、可维护的Web应用。本压缩包中的"web开发之rails最新调试通过购物车代码"是关于...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    Rails 3 in Action

    3. **MVC架构**:Rails采用Model-View-Controller架构,书中详细解释了模型(Model)、视图(View)和控制器(Controller)之间的交互与职责。 4. **路由**:Rails的路由系统允许灵活地定义URL到控制器动作的映射,...

    rails 3.2 API

    Rails是基于Ruby语言的一个开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,广泛应用于构建动态网站和Web应用程序。Rails 3.2是其历史上的一个重要版本,发布于2012年,引入了许多改进和新特性。 ...

    Ruby on Rails实践

    在Ruby on Rails实践中,我们首先会接触到MVC(Model-View-Controller)架构模式。Model代表数据模型,负责业务逻辑和数据库交互;View负责展示数据,通常由HTML、CSS和JavaScript组成;Controller处理用户请求,并...

    中文版rails教程

    在Ruby on Rails中,开发者可以快速构建功能丰富的动态网站,因为它提供了大量的内置功能和库,如数据库连接、ORM(对象关系映射)系统ActiveRecord、模板引擎ActionView以及路由系统ActionController等。...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    8. **app**:应用程序核心代码目录,包括模型(Model)、视图(View)和控制器(Controller),以及帮助器(Helper)、邮件器(Mailer)、通道(Channel)等。 9. **tmp**:临时文件目录,存储运行时生成的文件,如...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    Ruby+for+Rails

    Ruby on Rails(简称Rails)是基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。 1. **Ruby的安装** 在不同的操作系统上,安装Ruby的方式有所不同。在...

Global site tag (gtag.js) - Google Analytics