Webアプリケーション用の基本フレームワーク(スタティックページ、ユーザー認証、rspecによるユニット/統合テスト)を作成しました。私はこれを将来のWebアプリケーションの基礎として使用したいと思いますが、githubからクローンを作成した後に名前を変更する方法をセットアップする必要があります。私はここで名前を変更するコードを生成する助けを得ました] 1しかし、私はそれを統合する方法を把握するのに苦労しています。フォーム(モデルなし)を送信してコントローラーにその部分を再生させるのに問題がある
私はもともとrakefileに名前を変更したコードを書いていましたが、今はコントローラー内にあるはずです。残念ながら、私は自分のコードを動作させることができませんでした。ユーザーがアプリの新しい名前を入力できるようにするためのビューがあります。アイデアは、ユーザがフレームワークのレポをクローンし、フレームワークディレクトリに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)))'
更新:コードをいくつか変更しました。
- ルート:追加のポスト '/ナメル' =>
- 'ナメルの#作成' Renamerのモデルを作成しました。 Models/renamer.rbは "class Namer"だけで、 "end"です。 (データベースが含まれていないため、「< Base :: ActiveRecord」を削除しました)
- 名前を変更するためのレーキファイルを作成しました。ちょうど "renamer.rake"と呼ばれています。
状況はよく見えますが、コントローラからレイクファイルを呼び出す方法を探しています。助言がありますか?
更新2:私のコントローラ用の私の修正されたCreateメソッドです。ここでは、名前変更コードはレーキファイルの代わりにここにあります。
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'を投稿してください。エラーは何ですか? – maletor
私は実際にエラーが発生していません。私の問題は、アプリケーションコードの名前を変更するために実行されないことです。 –