我正在嘗試呈現一個簡單的表單來創建和編輯campaign資源。通常,在 Rails 應用程式中,我會像這樣呈現表單:
<%= simple_form_for @campaign do |f| %>
....inputs.....
<% end %>
通常,這足以為campaign. 但是在這種情況下,我不能使用相同的方法,因為無法推斷 new 和 edit 的 url。它們是兩個不同的網址。這是我的代碼:
New Action
.max-w-4xl.mx-auto
.mt-5.bg-white.shadow.sm:rounded-lg
.px-4.py-5.sm:p-6
%h3.text-lg.leading-6.font-medium.text-gray-900
New Campaign
.mt-5
= render 'form'
Edit Action
.max-w-4xl.mx-auto
.mt-5.bg-white.shadow.sm:rounded-lg
.px-4.py-5.sm:p-6
%h3.text-lg.leading-6.font-medium.text-gray-900
Editing Campaign: "#{@campaign.name}"
.mt-5
= render 'form'
對于新動作,我有簡單的表單編碼,如下所示:
= simple_form_for(@campaign, as: :campaign, method: :post, url: partner_campaigns_path(@partner)) do |f|
對于編輯操作,我有這樣的簡單形式:
= simple_form_for(@campaign, as: :campaign, method: :patch, url: campaign_path(@campaign)) do |f|
我想保留我的_form.html.haml,但我似乎無法將不同的網址傳遞給它。我試圖將 url 和 action 作為區域變數傳遞來呈現部分,但它們似乎總是空白。下面的例子:
= render 'form', locals: { url: campaign_path(@campaign), http_action: :patch }
每次我對這種方法進行變體時,我都無法獲得urlorhttp_action變數。我做錯了什么嗎?
uj5u.com熱心網友回復:
您可以使用#new_record?or#persisted?方法來實作這一點
- http_method = @campaign.new_record? ? :post : :patch
- url = @campaign.new_record? ? partner_campaigns_path(@partner) : campaign_path(@campaign)
= simple_form_for(@campaign, as: :campaign, method: http_method, url: url) do |f|
或者您可以將此邏輯封裝在輔助方法中
module ApplicationHelper
def resolve_form_options(campaign, partner)
if campaign.new_record?
{ url: partner_campaigns_path(partner), method: :post }
else
{ url: campaign_path(campaign), method: :patch }
end
end
end
= simple_form_for(@campaign, as: :campaign, **resolve_form_options(@campaign, @partner)) do |f|
uj5u.com熱心網友回復:
您可以從呈現部分表單的新頁面和編輯頁面傳遞變數。類似的東西 -<%= render 'form', request_method: 'new' %>如果從新視圖傳遞。然后在部分表單中,您可以執行 -
= simple_form_for(@campaign, as: :campaign, method: request_method == 'new' ? :post : :patch, URL: (request_method == 'new' ? partner_campaigns_path(@partner) : campaign_path(@campaign) )) do |f|.
我認為這可能不是正確的方法,可能是更好的方法。但如果它有效,那么嘿,請將答案標記為正確。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/489667.html
標籤:轨道上的红宝石
上一篇:如果有別名,如何銷毀依賴項?
