Nokogiri 在 Rails 中的使用方法

Ruby 1.9.3p0

Rails 3.1.3

在Gemfile中添加:

gem ‘nokogiri’

在/config/environment.rb中添加:

require ‘open-uri’

controller中的代码:

if request.post?

url = URI.escape(“http://www.google.com/search?q=#{params[:search]}”)

doc = Nokogiri::HTML(open(url))

@contents = Array.new

doc.css(‘h3 a’).each do |link|

@contents << link.content

end

end

view中的代码:

<form method=“post” action=“”>

<input type=“text” id=“search” name=“search” value=“<%= params[:search] if request.post? %>” />

<input type=“submit” value=“Search” />

</form>

<% end %>

</div>

Advertisements

[RoR]文件上传

Ruby 1.9.3p0

Rails 3.1.3

controller

require ‘kconv’

  def upload_process

    file = params[:file]

    name = file.original_filename 

    if ![’.jpg’, ’.gif’, ’.png’].include?(File.extname(name).downcase)

      msg = ‘画像ファイルのみアップロードできます。’

    elsif file.size > 5.megabyte

      msg = ‘アップロードできるのは5MBまでです。’

    else

      name = name.kconv(Kconv::SJIS, Kconv::UTF8)

      File.open(“tmp/docs/#{name}”, ‘wb’) { |f| f.write(file.read) }

      msg = “#{name.toutf8}のアップロードに成功しました。”

    end

    render :text => msg

  end

view

<%=form_tag({ :action => ‘upload_process’ }, { :multipart => true }) do %>

  <label>保存するファイル:

  <%= file_field_tag :file, :size => 50 %></label>

  <%= submit_tag ‘アップロード’ %>

<% end %>

Or you can use this:

<%= form_for @product,:url => { :action => “upload_process” } do |f| %>

<%= f.file_field :file %>

<% end %>