プロジェクト

全般

プロフィール

« | » 

リビジョン fd7c3c3d

高徹 高橋 徹 さんが約6年前に追加

[phase-23]Add csv file importing

差分を表示:

app/controllers/glossary_terms_controller.rb
render_404
end
def import
GlossaryTerm.import(params[:file], @project)
redirect_to project_glossary_terms_path(@project)
end
private
def glossary_term_params
app/models/glossary_term.rb
require 'csv'
class GlossaryTerm < ActiveRecord::Base
belongs_to :category, class_name: 'GlossaryCategory', foreign_key: 'category_id'
belongs_to :project
......
where 'rubi like ?', "#{sanitize_sql_like(keyword)}%"
}
def self.csv_attributes
["name", "name_en", "datatype", "codename", "description", "rubi", "abbr_whole"]
end
def self.import(file, project)
CSV.foreach(file.path, headers: true, encoding: "CP932:UTF-8" ) do |row|
term = new
term.attributes = row.to_hash.slice(*csv_attributes)
term.project = project
unless row["category"].blank?
term.category = GlossaryCategory.find_by(name: row["category"]) ||
GlossaryCategory.create(name: row["category"], project: project)
end
term.save!
end
end
end
app/views/glossary_terms/_sidebar.html.erb
{ controller: :glossary_terms, action: :new, project_id: @project },
class: 'icon icon-add' %></p>
<fieldset class="collapsible collapsed">
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed">
<%=l :label_glossary_term_import_csv %>
</legend>
<div style="display: none;">
<%= form_with url: import_project_glossary_terms_path, method: :post, local: true do |form| %>
<%= form.file_field :file %>
<%= form.submit l(:label_import) %>
<% end %>
</div>
</fieldset>
<h3><%=l :label_glossary_category %></h3>
<p><%= link_to_if_authorized l(:label_glossary_category_new),
{ controller: :glossary_categories, action: :new, project_id: @project},
config/locales/en.yml
label_glossary_terms: "Glossary terms"
label_glossary_term: "Glossary term"
label_glossary_term_new: "New glossary term"
label_glossary_term_import_csv: "Import from CSV"
label_glossary_categories: "Glossary categories"
label_glossary_category: "Glossary category"
label_glossary_category_new: "New glossary category"
......
project_module_glossary: Glossary
label_view: View
label_import: Import
label_glossary_index: index
label_not_categorized: Not categorized
label_grouping: Grouping
config/locales/ja.yml
label_glossary_terms: "用語集"
label_glossary_term: "用語"
label_glossary_term_new: "用語の作成"
label_glossary_term_import_csv: "CSVからインポート"
label_glossary_categories: "用語のカテゴリ一覧"
label_glossary_category: "用語のカテゴリ"
label_glossary_category_new: "カテゴリの作成"
......
project_module_glossary: 用語集
label_view: 表示
label_glossary_index: 索引
label_import: インポート
label_glossary_index: 索引
label_not_categorized: 未分類
label_grouping: グループ化
label_categorized: カテゴリで分類
config/routes.rb
end
collection do
post 'preview'
post 'import'
end
end
resources :glossary_categories
init.rb
glossary_categories: [:index, :show]
}
permission :manage_glossary_terms, {
glossary_terms: [:new, :create, :edit, :update, :destroy],
glossary_terms: [:new, :create, :edit, :update, :destroy, :import],
glossary_categories: [:new, :create, :edit, :update, :destroy],
},
require: :member

他の形式にエクスポート: Unified diff