私はRubyとRailsの真の初心者です。私は2日間ソリューションを探していました。私はform_tagからアクション 'を作成するために私のコントローラに新しいエントリを追加するためにデータを提出する必要がありますが、私は何かがひどく間違っているように見えます。必要な行動に。Rails 5. form_tagからカスタムアクションへの提出方法は?
<h1>Todos</h1>
<% @projects.each do |project| %>
<tr>
<h2><%= project.title %></h2>
<% project.todos.each do |todo| %>
<ul style="list-style-type:disc">
<li><%= todo.text %></li>
</ul>
<% end %>
</tr>
<% end %>
<%= form_tag({controller: "mega", action: "create"}, method: "get", remote: true) do %>
<h2>New todo</h2>
<p>
<%= text_field_tag 'text' %>
</p>
<p>
<%= select_tag 'title', options_from_collection_for_select(@projects, 'id', 'title') %>
</p>
<p>
<%= link_to 'CANCEL' %>
<%= link_to 'OK', "", :onclick => "$('#form_id').submit()" %>
</p>
<% end %>
とコントローラ:
class MegaController < ApplicationController
def index
@projects = Project.all
@todos = Todo.all
end
def update
end
def create
@newTodo = Todo.create(text: params[:text])
@newProject = Project.find_by(title: params[:title])
@newProject.todos << @todo
@newTodo.save
end
end
マイルートファイル ここではページのコードです。私は真剣にそれが動作するか分からない:
Rails.application.routes.draw do
get 'mega/index'
root 'mega#index'
get 'mega/update'
post 'mega/create'
resources :todos
resources :projects
end
あなたのコンソール(あなたがあなたのサーバーを走らせている場所)でおそらくルーティングエラーを起こしているようです。フォームは通常「取得」しません。彼らは通常、「投稿する」。とにかく、あなたの質問にコンソールのテキストを追加して、何が起きているのかを確認するべきでしょう。 – jvillian
私は間違いをしないようです。エラーログを見つける方法はありますか? – UsedC
あなたが探しているのは、すぐにいくつかのリソースを作成するアクションを作成することです。しかし、それは高度なトピックthats本当にnoobには適していません。私は良いチュートリアルを取って、代わりにレールの慣習を理解することをお勧めします。 – max