私はレールが初めてで、理解できない問題が残っています。私は自分のシナリオを説明します:Ruby on Rails:ネストされたモデルの編集ビューをレンダリングできません
私はDeviseを使って作成されたUserモデルを持っています。そのスキルは、ユーザーの中にルートを入れ子にしているので、私は、ルートファイルを変更した
- skill belongs_to :user
- user has_one :skill
:ユーザーを参照する
# Users (Devise)
devise_for :users, :path_names => { :sign_up => "register"}
# Skills
resources :users do
resource :skills
end
私はスキル(整数:整数科学数学)と呼ばれる別のモデルを作成しました私は、編集と更新を伴うSkillsControllerを作成しました。コードは以下の通りです:私はスキルの編集フォーム(HTTPに移動しようとするたびに
<%= form_for(@skill) do |skill_form| %>
<div>
<%= skill_form.label :math %><br />
<%= skill_form.text_field :math %>
</div>
<div class="actions">
<%= skill_form.submit 'Save' %>
</div>
<% end %>
:
class SkillsController < ApplicationController
def edit
@user = User.find(params[:user_id])
@skill = get_skill(@user)
end
def update
@skill = Skill.find(params[:id])
if (@skill.update_attributes(params[:skill]))
redirect_to(root_url, {:notice => 'Your skills were successfully updated.'})
else
render :action => "edit"
end
end
# the user might have been created without skills, so it will be nil on the first usage
# ToDo: extend Devise UserController to create an empty skill on the create action
def get_skill(user)
if !(user.skill)
user.skill = Skill.new
user.save
end
user.skill
end
end
はFinnally、私の意見/スキル/ edit.html.erbビューには、次のようになります。 :// localhostを:3000 /ユーザー/ 1 /スキル/編集)、次のエラーがスローされます。
ActionController::RoutingError in Skills#edit
No route matches {:controller=>"skills"}
Extracted source (around line #1):
1: <%= form_for(@skill) do |skill_form| %>
2:
3: <div>
私は私が何か間違ったことをやっている必要があります知っている...だけで何を把握することはできません。|事前に
おかげで、 ブルーノ
それは 'user.skillすべきではない|| user.build_skill.save !; user.skill'?私はライアンとZabbaとしてしようと試みてきた – Zabba
を示唆し、現在次のエラーが起こる:NoMethodErrorをスキル#編集に #のための未定義のメソッド 'skill_path」<#<クラス:0x386faa8>:0x386bcf8> 抽出されたソース(ライン#1の周りに): 1:<%= form_for(@skill)do | skill_form | %> – Bruno
@Zabba:実際には 'create_skill'がそれを行います。今あなたがあなたのdownvoteを取り除くほど親切であれば。 –