您好,我有我的路线在rails的方式:
resources :users do
resources :socials
end这是我的模型:
class User < ApplicationRecord
has_many :socials, dependent: :destroy
accepts_nested_attributes_for :socials
end
class Social < ApplicationRecord
belongs_to :user
end下面是我的socials控制器,用于销毁表socials中的一行,我不需要删除用户,只需要从嵌套的表单中删除带有id的socials中的一行:
<div class="container">
<%= form_with(model: @user, local: true) do |f| %>
...
Social Media
<div class="container m-3">
<%= f.fields_for :socials, {class: 'inline-block m-3'} do | social | %>
<%= social.label :name, class: 'inline-block m-3'%>
<%= social.text_field :name %>
<%= social.label :link, class: 'inline-block m-3'%>
<%= social.text_field :link %>
*<%= link_to 'Delete', user_social_path(@user.social.id), method: :delete %> ->
<hr>
<% end %>
</div>
<p>
<%= f.submit %>
</p>
<% end %>然后使用这个link_to,当我点击删除社会表时,我想删除行,我该怎么做呢?我使用的是ruby和rails的6.1.2.1版本
发布于 2021-02-20 16:55:58
我认为你不应该删除使用链接..
嵌套表单已经支持删除行的选项,您需要做的只是在社交中传递另一个键值对,即_destroy: true
在控制器端只允许强参数中的_destroy,
在模型中将其定义为类似于accepts_nested_attributes_for :socials, allow_destroy: true
你还可以在UI上玩点花样,让它更吸引人。
_destroy定义了一个隐藏字段,默认选项为false。_destroy字段的值更改为false现在,当您要保存/更新它时,它将被删除。
参考资料:https://api.rubyonrails.org/v6.1.0/classes/ActiveRecord/NestedAttributes/ClassMethods.html
发布于 2021-02-19 15:15:58
<%= link_to "delete", [@user, @user.social], :method => :delete %>https://stackoverflow.com/questions/66272329
复制相似问题