Ruby on Railsの新機能です。今私は簡単なToDoリストアプリをブートストラップで作ろうとしています。Railsはブートストラップモーダルで新しいフォームと編集フォームを追加します
すべて動作しますが、新しいタスクフォームをモーダルウィンドウにレンダリングしようとしましたが、クラッシュしました。ここに私の_form部分のコードは次のとおりです。
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
</div>
<div class="modal-body">
<h1>New Task</h1>
<%= form_for @task, :html => {class:"form-horizontal"} do |f|%>
<!-- Here is form code -->
<% end %>
<%= link_to 'Back', tasks_path %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
そして、ここでは私のIndex.html.erbです:
<div class="container-fluid">
<div class="row">
<h1 class="text-left">Task List</h1>
<%= button_to 'New Task', new_task_path, :class =>"btn btn-success pull-right", :method => "get", data: {'data-toggle' => "modal", 'data-targe' => "#myModal"} %>
</div>
<div class="row button-margin ">
<% @tasks.each do |task| %>
<div class="panel <%= task_status(task) %>">
<div class="panel-heading">
<%= task.title %>
<p class="pull-right"><%= task.dueDate %></p>
</div>
<div class="panel-body">
<h3><%= task.body %></h3>
</div>
</div>
<% end %>
</div>
<%= render "tasks/form" %>
</div>
私のインデックスページを起動しようとするので、私はエラーFirst argument in form cannot contain nil or be empty
を取得します。
私のコードで何が間違っていますか?そして、既存のタスクを編集アクションのフォームにどのように渡すことができますか?
UPD:タスクコントローラの新しいタスクの
方法は次のとおりです。で
class TasksController < ApplicationController
def index
@tasks=Task.all
end
def new
@task=Task.new
end
def show
@task=Task.find(params[:id])
end
def create
@task=Task.new(task_params)
if @task.save
redirect_to @task
else
render 'new'
end
end
private
def task_params
params.require(:task).permit(:title, :body, :creationDate, :dueDate)
end
end
変更? –
インデックスアクションに@task = Task.newも追加する必要があります。 – puneet18
インデックスファイル内で新しいタスクフォームにアクセスしようとしているので、@task = Task.newはインデックスメソッドになければなりません。 –