案例:用戶可編輯與蛞蝓友好ID
我站形式包含蛞蝓字段,如果輸入的值應該被用作金屬塊。
編輯:澄清:
我要的是很像蛞蝓WordPress中是如何工作的:
- 如果沒有提供塞 - >決高下名稱
- 如果提供塞 - >使用用戶輸入的蛞蝓
- 如果金屬塊更新 - >推老蛞蝓歷史
我的問題:
無法弄清楚如何讓Friendly Id使用用戶提供的slug。
class Station < ActiveRecord::Base
extend FriendlyId
belongs_to :user
has_many :measures
validates_uniqueness_of :hw_id
validates_presence_of :hw_id
class_attribute :zone_class
self.zone_class ||= Timezone::Zone
friendly_id :name, :use => [:slugged, :history]
before_save :set_timezone!
....
def should_generate_new_friendly_id?
name_changed? or slug_changed?
end
end
編輯:
<%= form_for(@station) do |f| %>
<%=
f.div_field_with_label(:name) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:slug) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:hw_id, 'Hardware ID') do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:latitude) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:longitude) do |key|
f.text_field(key)
end
%>
<%= f.div_field_with_label(:user_id, "Owner") do |key|
f.select(:user_id, options_from_collection_for_select(User.all, :id, :email), { include_blank: true })
end
%>
<div class="actions">
<%= f.submit %>
</div>
<% end %><%= form_for(@station) do |f| %>
<%=
f.div_field_with_label(:name) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:slug) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:hw_id, 'Hardware ID') do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:latitude) do |key|
f.text_field(key)
end
%>
<%=
f.div_field_with_label(:longitude) do |key|
f.text_field(key)
end
%>
<%= f.div_field_with_label(:user_id, "Owner") do |key|
f.select(:user_id, options_from_collection_for_select(User.all, :id, :email), { include_blank: true })
end
%>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
你可以顯示錶單嗎?現在你使用的是friendly_id的名字。您只需要允許用戶更改名稱參數即可。 – ChrisBarthol
用戶可以更改已經更改的名稱參數 - 我想要的是用戶可以自定義slu - - 但應用程序應該生成一個基於名稱的slu if如果沒有提供slu 012 – max
我想我很困惑你在問什麼。用戶可以更改名稱,因此他們可以自定義slug。如果你想從一個不同的參數產生slug,你只需要'friendly_id:parameter,:use => [:slugged,:history]' – ChrisBarthol