Как получить модифицированный столбец из эстакады Rails для хранения информации, как остальные?
Я сгенерировал каркас для приложения To-Do List и оставил несколько столбцов для добавления позже.
Я выполнил команду, чтобы создать миграцию, чтобы добавить новый столбец с именем client
и я изменил свои файлы, чтобы он показывал на проектах index
а также form
, но когда я ввожу что-то в поле клиента и отправляю, он не сохраняет информацию и остается пустым..
Обновление 1:
Вот что в моих маршрутах:
'
Rails.application.routes.draw do
root :to => 'projects#index'
resources :projects
end
'
Вот мой индексный просмотр:
'
<h1 id="title">Project List</h1>
<table>
<thead>
<tr id="headers">
<th>Title</th>
<th>Client</th>
<th>Description</th>
<th>Hours</th>
<th>Done</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody class="col-md-2" id="listItems">
<% @projects.each do |project| %>
<tr id="table">
<td><%= project.title %></td>
<td><%= project.client %></td>
<td><%= project.description %></td>
<td><%= project.hours %></td>
<td><%= project.done %></td>
<td><%= link_to " #{image_tag('show.png')}".html_safe, project, id:'showButton' %></td>
<td><%= link_to " #{image_tag('edit.png')}".html_safe, edit_project_path(project), id:'editButton' %></td>
<td><%= link_to " #{image_tag('destroy.png')}".html_safe, project, id:'destroyButton', method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Project', new_project_path, id:"new" %>
<footer id="footer">Copyright 2014 Kira Banks</footer>
'
1 ответ
Чтобы обеспечить безопасность вашего приложения, в Rails есть функция Strong Parameters, а в документации сказано:
Он предоставляет интерфейс для защиты атрибутов от назначения конечным пользователем. Это запрещает использование параметров Action Controller в массовом назначении активной модели до тех пор, пока они не будут внесены в белый список.
Итак, в основном вам нужно добавить в белый список новый client
атрибут в Projects
контроллер, добавив его в список:
class ProjectsController < ApplicationController
# ...
# at the end of the file
private
def project_params
params.require(:project).permit(:title, :description, :hours, :done, :client)
end
end