0

После попытки сделать эту работу около 12 часов, я должен обратиться к SO для спасения. Вот сценарий.Rails Вложенный объект формы в другом контроллере

Я использую zurb foundation 4 и пытаюсь создать открытую модальную форму ajax для вложенного ресурса на панели инструментов.

У меня есть следующие вложенные ресурсы:

resources :lessons, only: [:index, :edit, :show] do 
    resources :notes, only: [:new, :create, :edit, :delete] 
    end 

формы на уроках/1/примечания/новые работы отлично.

У меня есть таблица на моих static_pages/дома, как так:

<table> 
    <thead> 
    <tr> 
     <th>Student</th> 
     <th>Subject</th> 
    </tr> 
    </thead> 
<% @lessons.each do |lesson| %> 
    <tr> 
     <td><%= link_to lesson.student.name, lesson %></td> 
     <td><%= lesson.subject.name %></td> 
     <td><%= link_to 'make a note', new_lesson_note_path(lesson), "data-reveal-id"=>"note-for" %></td> 
    </tr> 
<% end %> 

При всей моей разметке, я следующая форма в основе выявления модального:

<!--Reveal Form--> 
<div id="note-for" class="reveal-modal"> 
<% @lessons.each do |lesson| %> <--form now associated with proper object--> 
    <%= form_for Note.new, :url => new_lesson_note_path(lesson) do |f| %> 
     <div class="field"> 
     <%= f.label :content %> 
     <%= f.text_area :content %> 
     </div> 
     <div class="actions"> 
     <%= f.submit "Save", class: "small button"%> 
     </div> 
    <% end %> 
    <a class="close-reveal-modal">&#215;</a> 
    <% end %> 
</div> 

Модальное удаление штрафа, но при этом представляется следующая ошибка:

No route matches [POST] "/lessons/1/notes/new" 

Я серьезно не понимаю, пожалуйста, помогите.

ответ

1

НАКОНЕЦ!

после 13 часов возиться, решение!

добавить петлю в модальной выявить DIV

<div id="note-for" class="reveal-modal"> 
    <% @lessons.each do |lesson| %> 
    ....... 
    <% end %> 
</div> 

обеспечить notes_controller.rb действие правильно отформатирован

def create 
    @lesson = Lesson.find(params[:lesson_id]) 
    @note = @lesson.notes.build(params[:note]) 
    if @note.save 
    respond_to do |format| 
     format.html { redirect_to root_path, notice: 'Lesson noted!' } 
     format.js 
    end 
    else 
     redirect_to root_path 
    end 
    end 

, и теперь я в паб! спасибо ole

2

Я предполагаю, что вы сделали ошибку с переменной @lessons. Вы передаете, отношение модели к помощнику URL, а не модели.

Для ее решения попробовать:

#controller 
@lesson = Lesson.find(params[:lesson_id]) 

#view 
... 
<%= form_for Note.new, :url => new_lesson_note_path(@lesson) do |f| %> 
... 
+0

Я действительно пробовал это, не работает. Хорошая новость заключается в том, что мне удалось сформировать правильную ассоциацию через <% @ lessons.each do | lesson | %>. См. Отредактированный код. Сейчас проблема только в том, что она выдает ошибку маршрутизации. Я думаю, что (@lessons) связывает форму с набором уроков, а не только одной. –

+0

Есть что-то волшебное о SO. Часто я трачу часы на проблему. Сдаваться. Просите помощи в SO. И как только я заканчиваю набирать свой вопрос, решение просто появляется у меня в голове. –

Смежные вопросы