मेरे पास एक RoR ऐप में एक सबमिटिंग फॉर्म है, जो simple_form के साथ बनाया गया है। जब फ़ील्ड रिक्त होते हैं, तब भी ऐप किसी भी त्रुटि या चेतावनी को संकेत दिए बिना अगले चरण पर जाता है। फ़ील्ड डिफ़ॉल्ट रूप से required: true
होना चाहिए; लेकिन इसे मैन्युअल रूप से लिखना भी काम नहीं करता है।सरल_फॉर्म आवश्यक फ़ील्ड काम नहीं करता है - रेल पर रूबी
ऐप में 3 चरण हैं: न्यूपोस्ट (नया दृश्य) -> पूर्वावलोकन (दृश्य बनाएं) -> पोस्ट करें।
def new
@post= Post.new
end
def create
@post = Post.new(params.require(:post).permit(:title, :category_id))
if params[:previewButt] == "Continue to Preview your Post"
render :create
elsif params[:createButt] == "OK! Continue to Post it"
if @post.save!
redirect_to root_path
else
render :new
end
elsif params[:backButt] == "Make changes"
render :new
end
end
मेरे न्यू दृश्य (उद्धरण):
यह मेरी नियंत्रक और विचारों का एक उद्धरण के साथ और अधिक स्पष्ट हो जाएगा
<%= simple_form_for @post do |form| %>
<%= form.input :title, input_html: { class: 'post-title-input' }, label: false, hint: '"Your post title"' %>
<%= form.collection_radio_buttons(:category_id, Category.all, :id, :name, :item_wrapper_class => "selectable") %>
<%= form.button :submit , name: "previewButt", value: "Continue to Preview your Post", class: "btn btn-lg btn-primary btn-preview" %>
<% end %>
मेरे (उद्धरण) दृश्य बनाएँ:
<%= simple_form_for @post do |form| %>
<%= form.hidden_field :title, {:value => @post.title} %>
<%= form.hidden_field :category_id, {:value => @post.category_id} %>
<% end %>
एन ote कि समस्या सहेजते समय नहीं है, मॉडल परिभाषा ठीक काम करती है, समस्या केवल simple_form में है।
class Post < ActiveRecord::Base
belongs_to :category
validates :title, presence: true
validates :category_id, presence: true
end
समाधानDickieBoy संकेत करने के लिए धन्यवाद:
बदलें करने के लिए नियंत्रक:
def create
@post = Post.new(params.require(:post).permit(:title, :category_id))
if params[:previewButt] == "Continue to Preview your Post"
if @post.valid?
render :create
else
render :new
elsif params[:createButt] == "OK! Continue to Post it"
if @post.save!
redirect_to root_path
else
render :new
end
elsif params[:backButt] == "Make changes"
render :new
end
end