Чтобы пользователи не могли передавать значения в любое поле, кроме url
, вам необходимо удалить все поля, кроме URL, из формы нового ресурса.
приложение / просмотров / ресурсы / new.html.erb
<%= form_for(@resource) do |f| %>
<%= f.text_field :url %>
<% end %>
И в вашем действии контроллера create
, разрешите только :url
в параметрах.
приложение / контроллеры / resources_controller.rb
def create
@resource = Resource.new(params.require(:resource).permit(:url))
# Set other attributes using `metainspector`. See documentation for usage.
if @resource.save
redirect_to resources_path
else
render :new
end
end
Вы можете иметь отдельную форму (со всеми полями) для редактирования ресурса вручную и другой набор разрешенных параметров для действия update
.
приложение / просмотров / ресурсы / edit.html.erb
<%= form_for(@resource) do |f| %>
<%= f.text_field :url %>
<%= f.text_field :title %>
<%= f.text_field :content %>
<!-- Add other editable fields here -->
<% end %>
приложение / контроллеры / resources_controller.rb
before_action :fetch_resource, only: [:edit, :update]
def update
if @resource.update_attributes(resource_params)
redirect_to resources_path
else
render :edit
end
end
private
def fetch_resource
# Fetch `Resource` instance from database. Homework for you.
end
def resource_params
params.require(:resource).permit(:title, :url, :content, :name, :tags_as_string)
end
Примечание: Этот код не проверен. Это просто дать вам подсказки о том, как вы должны действовать. Возможно, вам придется изменить некоторые имена методов / полей, чтобы они соответствовали вашему приложению.