2017-12-05 6 views
0

私はbelongs_toとhas_many関係で新しいスキルを作成しようとしています。未定義のスキルskill_path Rails

class Row < ApplicationRecord 
    belongs_to :timeframe, required: false 
    belongs_to :map, required: false 
    belongs_to :standard, required: false 
    belongs_to :content, required: false 
    belongs_to :skill, required: false 
    belongs_to :resource, required: false 
    belongs_to :assignment, required: false 
end 

class Skill < ApplicationRecord 
    has_many :rows 
    has_many :maps, through: :rows 
end 

新しいスキルを1行で作成したいので、次のルートを作成しました。

資源:私は、私は、行の下にそのスキルを作成するには、次のルートを使用する必要があることがわかりすくいルートをすればスキル エンド

:行が リソースを行います。 new_row_skill_path

このリンクを使用する場合は、フォームに移動してそのフォームを作成してください。

<%= link_to '+', new_row_skill_path(row), class: 'btn btn-primary' %>

これは、私が使用しています形式です。しかし、私はそれが私はこのエラーを取得するボタンを追加]をクリックしていたときに

<%= form_with(model: skill, local: true) do |form| %> 
    <div class="form-group"> 
    <%= form.label :skill %> 
    <%= form.text_field :skill, class: 'form-control' %> 
    </div> 

    <%= form.submit 'Submit', class: 'btn btn-primary' %> 
<% end %> 

を。 undefined method skills_path'`

これはform_with(モデル:スキル)を使用して私と関係がありますか?私は行の下のルートがそれほど好きだが、私はまだそのエラーを取得しているカスタム書いてみました。

resources :rows do 
    get 'rows/:id/skills/new', to: 'skills#new' 
end 

スキルコントローラは

あなたのルートファイルで
class SkillsController < ApplicationController 
    def new 
    @skill = Skill.new 
    end 

    def create 
    @skill = Skill.new(skill_params) 

    respond_to do |format| 
     if @skill.save 
     format.html { redirect_to root_path, notice: 'Skill created.' } 
     else 
     format.html { render :new, notice: 'That shit failed.' } 
     end 
    end 
    end 

    private 
    def skill_params 
     params.require(:skill).permit(:skill_id, :skills) 
    end 
end 
+0

フォームを使ってすべてのデータを送信するためのアクションを '作成 'しましたか?コントローラコードを共有できますか? – Gabbar

答えて

0

、使用に戻る:

resources :rows do 
    resources :skills 
end 

次に指定してみてくださいurlそうのような:

<%= form_with(model: skill, local: true, url: row_skills_path) do |form| %>

+0

あなたの答えを使用すると、次のエラーが表示されます: 'ルートが一致しません{:action =>" show "、:controller =>" skills "、:row_id =>" 4 "}、必須キーがありません:[:id]' –

+0

私はこのエラーを引き起こしていると思われる私の答えにタイプミスがありました。 'url'は' row_skills_path'に設定する必要があります。私は答えでこれを修正しました。 – jljohnstone

+0

そのアップデートが機能しました。何らかの理由で、作成されたスキルIDで行を更新することができません。どうすればそれを達成できますか? –

関連する問題