我是Ruby和Rails的真正新手,我一直在尋找兩天的解決方案。我需要從form_tag提交數據到''創建'在我的控制器中添加新的條目到數據庫,但看起來我正在做一些非常錯誤的事情,因爲絕對沒有任何反應,似乎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
如果你想要做的是創建一個動作,一次創建幾個資源有軌道的方式來做到這一點。它是一個先進的主題,雖然不適合小菜鳥。我建議你先寫一篇好的教程,然後先找出導軌約定。 – max