Ruby on rails 在Rails应用程序中切换(创建/销毁)两条记录之间的连接?

Ruby on rails 在Rails应用程序中切换(创建/销毁)两条记录之间的连接?,ruby-on-rails,Ruby On Rails,我有三种型号。用户(电子邮件、姓名等)、嗜好(姓名)和连接这两个的兴趣(用户id、嗜好id)。我有一个当前登录用户的爱好表。如何创建一个按钮来切换(创建和销毁)用户和爱好之间的连接 以下是我的尝试: <% @interest = Interest.new(hobby_id: hobby.id, user_id: @user.id) %> <%= link_to 'Create', new_interest_path, method: :get, class: "btn btn

我有三种型号。用户(电子邮件、姓名等)、嗜好(姓名)和连接这两个的兴趣(用户id、嗜好id)。我有一个当前登录用户的爱好表。如何创建一个按钮来切换(创建和销毁)用户和爱好之间的连接

以下是我的尝试:

<% @interest = Interest.new(hobby_id: hobby.id, user_id: @user.id) %> 
<%= link_to 'Create', new_interest_path, method: :get, class: "btn btn-primary" %>

然后在new.html.erb中

<p>UID: <%= @interest.user_id %></p>
<p>HID: <%= @interest.hobby_id %></p>
UID:

隐藏:

但这肯定行不通


我想Rails每次发出请求时都会生成一个新的@interest实例,但我如何克服这个问题呢?

如果我理解你的问题,如果用户没有兴趣,你会想链接到一个新的兴趣,如果用户有兴趣,你会想链接到销毁路径

因此,在您的控制器中,您可以使用
find\u或\u initialize\u by
获取用户的兴趣或初始化新的兴趣

@interest=@user.interests.find\u或\u initialize\u by(hobby\u id:hobby.id)

然后在您的视图中,检测您的用户是否感兴趣,或者我们是否初始化了一个新用户。然后显示相应的链接

# check if `@interest` is a db record
<% if @interest.persisted? %>
  <%= link_to 'Destroy', interest_path, method: :delete, class "..." %>
<% else %>
  <%= link_to 'Create', new_interest_path, class "..." %>
<% end %>

我想做的是链接到一个创建操作,这样除了单击一个“创建”按钮之外就没有更多的步骤了。看来我的问题不清楚你的问题现在不是很清楚。慢慢来充实一下。顺便说一下,您不必重定向到
兴趣/new
来创建兴趣。您可以使用
表单
在任何地方执行此操作。根据您的兴趣,您可以创建一个带有隐藏字段的表单,并且只显示提交按钮。单击该按钮将创建一个新的
兴趣
,然后我将重写我的问题
form_for @interest do |f|
  hidden_field_tag 'interest[user_id]', @user.id
  hidden_field_tag 'interest[hobby_id]', hobby.id
  submit_tag 'Create'
end