【发布时间】:2012-03-13 01:27:14
【问题描述】:
我已经为 webapps 创建了一个基本框架(一些静态页面、用户身份验证、使用 rspec 进行单元/集成测试)。我想以此作为未来 webapps 的基础,但我需要在从 github 克隆它之后设置一种重命名它的方法。我在这里得到了一些生成重命名代码的帮助]1,但我正在努力弄清楚如何集成它。
我最初在 rakefile 中编写了重命名代码,但现在我认为它可能应该在控制器中。不幸的是,我无法让我的代码工作。我有一个视图,允许用户为应用程序输入一个新名称。这个想法是,用户将克隆框架 repo,cd 进入框架目录,启动 rails 服务器,然后在浏览器上转到本地主机以从那里重命名文件。但假设启用该视图的视图不起作用。
views/namer/new/html.erb
<h1>Rails Framework</h1>
<%= form_tag "/namer" do %>
<%= text_field_tag "appname" %>
<%= submit_tag "Name Your App" , :action => 'create' %>
<% end %>
我无法让“提交”操作正常工作。这是我的控制器的样子。
controllers/namer_controller.rb
class NamerController < ApplicationController
def index
render('new')
end
def new
end
def create
@appname = Namer.new(params[:appname])
#first, change any instances of the term "framework" to the new name of the app
file_names = ['config/environments/test.rb', 'config/environments/production.rb',
'config/environment.rb']
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("Framework", @appname) }
end
#next,change the root path away from namer#new
file_name ='config/routes.rb'
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("namer#new", "pages#home") }
flash[:notice] = "Enjoy your app."
render('pages/home')
end
end
知道我做错了什么吗?
另外,控制器真的是“重命名”代码的最佳位置吗?
编辑:这是我的 routes.rb 文件。
Framework::Application.routes.draw do
resources :users
resources :sessions, :only => [:new, :create, :destroy]
match '/signup', :to => 'users#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
root :to => "namer#new"
match ':controller(/:action(/:id(.:format)))'
更新:我以几种方式更改了我的代码。
- 路线:添加帖子 '/namer' => 'namer#create'
- 创建了一个重命名器模型。 Models/renamer.rb 只是“class Namer”,然后是“end”。 (我删除了“<:activerecord>
- 为重命名代码创建了一个 rake 文件。它只是称为“renamer.rake”。
情况看起来不错,但我仍在寻找一种从控制器调用 rake 文件的方法。有什么建议吗?
更新 2:这是我为我的控制器修改后的 Create 方法。现在重命名代码在这里而不是在 rake 文件中。
def create
@appname = Namer.new(params[:appname])
file_names = ['config/environments/test.rb', 'config/environments/production.rb',
'config/environment.rb']
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("Framework", @appname) }
flash[:notice] = "Enjoy your app."
render('pages/home')
end
【问题讨论】:
-
你能粘贴到你的 routes.rb 中吗?
-
发布您的
routes.rb。什么错误? -
我实际上没有收到任何错误。我的问题是重命名应用程序代码没有被执行。
标签: ruby-on-rails ruby forms erb rails-routing