在按钮单击时选择 phone_number 属性
Pick phone_number attribute On Button Click
我有一个索引文件,如下所示,它是从数据库中挑选信息并显示一个列表。
我希望能够选择 phone_number 当用户单击“联系”按钮以便向该 phone 号码发送短信时。
<div class="flex flex-col min-h-screen bg-white">
<div class="max-w-4xl flex items-center h-auto lg:h-screen flex-wrap mx-auto my-32 lg:my-0">
<% @providers.each do |provider| %>
<!--Main Col-->
<div id="profile" class="w-full lg:w-3/5 rounded-lg lg:rounded-l-lg lg:rounded-r-none shadow-2xl bg-white opacity-75 mx-6 lg:mx-0">
<div class="p-4 md:p-12 text-center lg:text-left">
<!-- Image for mobile view-->
<div class="block lg:hidden rounded-full shadow-xl mx-auto -mt-16 h-48 w-48 bg-cover bg-center" style="background-image: url('https://source.unsplash.com/MP0IUfwrn0A')"></div>
<%= image_tag provider.avatar.variant(resize_to_limit: [150, nil]), class: "w-100 h-100 rounded-full" %>
<h1 class="text-3xl font-bold pt-8 lg:pt-0"><%= provider.full_name %></h1>
<div class="mx-auto lg:mx-0 w-4/5 pt-3 border-b-2 border-teal-500 opacity-25"></div>
<p class="invisible">
<p>Services:</p>
<% provider.service.each do |s| %>
<p class="pt-4 text-base font-bold flex items-center justify-center lg:justify-start">
<%= s %>
</p>
<% end %>
</p>
<p class="pt-2 text-gray-600 text-xs lg:text-sm flex items-center justify-center lg:justify-start">
<%= provider.zip_code %></p>
<p class="pt-8 text-sm"><%= provider.brief_description %></p>
<!-- <p><%= provider.phone_number %></p> -->
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full"%>
</div>
</div>
</div>
<% end %>
<!-- Pin to top right corner -->
</div>
</div>
这是上面代码的结果:
我已经用下面的代码对 JS 进行了试验,但我只选择了其中一项的 phone_number,当我单击提交按钮时它会出现在所有其他项目中。
<%= javascript_tag do %>
<% @providers.each do |p|%>
window.providerPhone = '<%= j p.phone_number %>';
<% end %>
<% end %>
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full", :onclick => "alert(providerPhone)" %>
</div>
我认为我必须使用 JS,但我不确定如何去做。
我遇到了 this,但没有帮助。
我该如何解决这个问题。谢谢。
你试过像这样使用 each_with_index
吗:
<%= javascript_tag do %>
<% @providers.each_with_index do |p, index|%>
window.providerPhone = '<%= j p[index].phone_number %>';
<% end %>
<% end %>
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full", :onclick => "alert(providerPhone)" %>
</div>
我所做的是像这样在按钮周围包裹一个 <a> tag
;
<div class="pt-12 pb-8">
<a href="<%= providers_notify_path(provider_phone: provider.phone_number, provider_serv: provider.service)%>">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full"%>
</a>
</div>
我刚刚在 <a> tag
中包含了一个带有 href
的路径。
我使用的路径是:providers_notify_path
。
然后我在路径中的另一个控制器中传递了我想要访问的值。
在这种情况下,我从 provider.phone_number
.
中选择了 provider_phone
所以,为了在控制器中使用 provider_phone
值,我这样做了:
@provider_phone = params[:provider_phone]
然后我可以在我想要的操作中使用实例变量 @provider_phone
,在特定情况下是 create
操作。
我有一个索引文件,如下所示,它是从数据库中挑选信息并显示一个列表。
我希望能够选择 phone_number 当用户单击“联系”按钮以便向该 phone 号码发送短信时。
<div class="flex flex-col min-h-screen bg-white">
<div class="max-w-4xl flex items-center h-auto lg:h-screen flex-wrap mx-auto my-32 lg:my-0">
<% @providers.each do |provider| %>
<!--Main Col-->
<div id="profile" class="w-full lg:w-3/5 rounded-lg lg:rounded-l-lg lg:rounded-r-none shadow-2xl bg-white opacity-75 mx-6 lg:mx-0">
<div class="p-4 md:p-12 text-center lg:text-left">
<!-- Image for mobile view-->
<div class="block lg:hidden rounded-full shadow-xl mx-auto -mt-16 h-48 w-48 bg-cover bg-center" style="background-image: url('https://source.unsplash.com/MP0IUfwrn0A')"></div>
<%= image_tag provider.avatar.variant(resize_to_limit: [150, nil]), class: "w-100 h-100 rounded-full" %>
<h1 class="text-3xl font-bold pt-8 lg:pt-0"><%= provider.full_name %></h1>
<div class="mx-auto lg:mx-0 w-4/5 pt-3 border-b-2 border-teal-500 opacity-25"></div>
<p class="invisible">
<p>Services:</p>
<% provider.service.each do |s| %>
<p class="pt-4 text-base font-bold flex items-center justify-center lg:justify-start">
<%= s %>
</p>
<% end %>
</p>
<p class="pt-2 text-gray-600 text-xs lg:text-sm flex items-center justify-center lg:justify-start">
<%= provider.zip_code %></p>
<p class="pt-8 text-sm"><%= provider.brief_description %></p>
<!-- <p><%= provider.phone_number %></p> -->
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full"%>
</div>
</div>
</div>
<% end %>
<!-- Pin to top right corner -->
</div>
</div>
这是上面代码的结果:
我已经用下面的代码对 JS 进行了试验,但我只选择了其中一项的 phone_number,当我单击提交按钮时它会出现在所有其他项目中。
<%= javascript_tag do %>
<% @providers.each do |p|%>
window.providerPhone = '<%= j p.phone_number %>';
<% end %>
<% end %>
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full", :onclick => "alert(providerPhone)" %>
</div>
我认为我必须使用 JS,但我不确定如何去做。 我遇到了 this,但没有帮助。 我该如何解决这个问题。谢谢。
你试过像这样使用 each_with_index
吗:
<%= javascript_tag do %>
<% @providers.each_with_index do |p, index|%>
window.providerPhone = '<%= j p[index].phone_number %>';
<% end %>
<% end %>
<div class="pt-12 pb-8">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full", :onclick => "alert(providerPhone)" %>
</div>
我所做的是像这样在按钮周围包裹一个 <a> tag
;
<div class="pt-12 pb-8">
<a href="<%= providers_notify_path(provider_phone: provider.phone_number, provider_serv: provider.service)%>">
<%= button_tag "Contact", class: "bg-teal-700 hover:bg-teal-900 text-white font-bold py-2 px-4 rounded-full"%>
</a>
</div>
我刚刚在 <a> tag
中包含了一个带有 href
的路径。
我使用的路径是:providers_notify_path
。
然后我在路径中的另一个控制器中传递了我想要访问的值。
在这种情况下,我从 provider.phone_number
.
provider_phone
所以,为了在控制器中使用 provider_phone
值,我这样做了:
@provider_phone = params[:provider_phone]
然后我可以在我想要的操作中使用实例变量 @provider_phone
,在特定情况下是 create
操作。