Я использую Rails 3.2 и Ruby, 4. Когда я просматриваю к http://localhost:3000/account/new я получаю сообщение об ошибке:Rails маршрутизации, NoMethodError
NoMethodError in Accounts#new
Showing D:/row/dev/basic/app/views/accounts/_form_account.html.erb where line #1 raised:
undefined method `accounts_path' for #<#<Class:0x42c8040>:0x6daa960>
Extracted source (around line #1):
1: <%= form_for(@account) do |f| %>
2:
3: <div>
4: <%= f.label :username %><br>
Я создал взгляды данные с помощью rails generate controller Controllernames index show new edit delete
. Я также побежал rails generate model account
. В соответствии с курсом онлайн Rails, который я следую за этим, следует создать в routes.rb:
Редактировать: Я использовал rails generate model accounts
, поэтому с s в конце.
resources :accounts
get 'accounts/:id/delete' => 'accounts#delete', :as => :accounts_delete
Однако, это не было создано на route.rb. Мой routes.rb после некоторого редактирования является:
Basismysql::Application.routes.draw do
# Public pages
get '/page1' => 'pages#page1'
get '/page2' => 'pages#page2'
get '/page3' => 'pages#page3'
get "/account/index" => 'accounts#index'
get "/account/show" => 'accounts#show'
get "/account/new" => 'accounts#new'
get "/account/edit" => 'accounts#edit'
get "/account/delete" => 'accounts#delete'
get 'account/:id/delete' => 'accounts#delete', :as => :accounts_delete
devise_for :users
root :to => 'pages#index'
end
new.html.erb является:
<div class="container">
<h1>Accounts#new</h1>
<p>Find me in app/views/accounts/new.html.erb</p>
</div>
<div class="container">
<%= render "form_account" %>
</div>
И _form_account.html.erb является:
<%= form_for(@account) do |f| %>
<div>
<%= f.label :username %><br>
<%= f.text_field :username %>
</div>
<div>
<%= f.label :firstname %><br>
<%= f.text_field :firstname %>
</div>
<div>
<%= f.label :lastname %><br>
<%= f.text_field :lastname %>
</div>
<div>
<%= f.label :organisation %>
<%= f.text_field :organisation %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Часть контроллера счета является:
def new
@account = Account.new
end
def create
@account = Account.new(account_params)
if @account.save
redirect_to(:action => 'index')
else
render('new')
end
end
private
def account_params
params.require(:account).permit(:username, :firstname, :lastname, :organisation)
end
Спасибо '' 'resources: accounts''' работал. Я предполагаю, что вы упоминали «' resource: account''', потому что я написал '' 'rails generate model account'''.Это действительно был тип моего вопроса, я действительно использовал '' 'rails generate model accounts''' – Nick
@ Ник вам следует использовать уникальную« учетную запись »в создании модели, и соответствующие маршруты для этой модели' account' будут «ресурсами: accounts'. Вам вообще не нужен 'resource: account'. –