Sexes_controller में "बनाने" कार्रवाई के लिए फॉर्म जमा करने पर, मैंने चीजों को वास्तव में पृष्ठ दृश्य/परिणाम/अनुक्रमणिका पर रीडायरेक्ट करने के लिए बदल दिया है, जिससे फॉर्म सबमिट किया गया था, लेकिन अब फ्लैश संदेश प्रदर्शित नहीं हो रहा है, भले ही मैं कर रहा हूं

<%= flash[:notice] %>

विचारों/परिणामों/अनुक्रमणिका के निचले भाग में (अर्थात जिस पृष्ठ से फ़ॉर्म सबमिट किया गया था), जो कि मुझे लगता है कि आप इसे करने वाले हैं।

क्या ऐसा इसलिए है क्योंकि किसी प्रकार की कैशिंग हो रही है जिससे फ़्लैश संदेश दिखाई नहीं दे रहा है? कोई विचार है कि इसके आसपास कैसे जाना है?

अपडेट करें

यह सोचकर कि यह अधिक जटिल हो सकता है, मैंने परिणाम नियंत्रक की अनुक्रमणिका क्रिया में फ़्लैश संदेश पुनर्प्राप्त करने का प्रयास किया है

@flashbash = Sex.find(params[:id])

और फिर वापस विचारों/परिणाम/अनुक्रमणिका में

<%= if @flashbash flash[:notice] %>  (I think this code is wonky)

ध्यान दें, मैंने यह कोशिश की, लेकिन यह काम नहीं किया। उसने कहा, Couldn't find Sex without an ID

कोई विचार की हम इसे कैसे ठीक कर सकते हैं?

3
Leahcim 3 पद 2011, 23:43

1 उत्तर

सबसे बढ़िया उत्तर

आमतौर पर फ्लैश को एप्लिकेशन की लेआउट फ़ाइल में प्रस्तुत किया जाता है। यह हर दृश्य में <%= फ्लैश[:नोटिस] %> आउटपुट होने के दोहराव से बचा जाता है, जिसमें संभावित रूप से एक फ्लैश संदेश हो सकता है।

यह क्यों नहीं दिखा रहा है कि आप अपने फ्लैश [: नोटिस] चर को प्रदर्शित करने के लिए कुछ सेट कर रहे हैं। नियंत्रक में एक निर्माण क्रिया का एक उदाहरण इस तरह दिख सकता है:

# app/controllers/sex_controller.rb
def create
  @sex = Sex.new(params[:sex])
  if @sex.save
    flash[:notice] = "Saved successfully"
    redirect_to @sex # This redirects to the show action, where the flash will be displayed
  else
    flash[:error] = "There were errors..."
    render :action => :new # This displays the new form again
  end
end

# app/layouts/application.html.erb
<html>
  ...
  <%= flash[:notice] %>
  <%= flash[:error] %>
  <%= yield %>
  ...
</html>

यहां फ्लैश संदेशों के बारे में अधिक जानकारी: http://guides.rubyonrails.org/action_controller_overview.html#the-flash

7
Ben Simpson 4 पद 2011, 07:16