রেলস: স্থানীয়দের পার্টিতে পাস করার সিনট্যাক্স সম্পর্কে বিভ্রান্ত


99

পার্লিশনগুলি রেন্ডারিংয়ের সাথে (এবং স্থানীয়দের মধ্যে তাদের পাস করা) রেলগুলি "ম্যাজিক" বোঝা।

কেন এই কাজ করে:

<%= render "rabbits/form" %>

এবং এই কাজ:

<%= render "rabbits/form", :parent => @warren, :flash => flash %>

তবে এটি কার্যকর হয় না :

<%= render "rabbits/form", :locals => { :parent => @warren, :flash => flash } %>

তবে এটি করে:

<%= render :partial =>"rabbits/form", :locals => { :parent => @warren, :flash => flash } %>

এছাড়াও, আমি কীভাবে এই সংক্ষিপ্তসারগুলি সন্ধান করতে পারি যাতে আমাকে এস-তে লোকদের বিরক্ত করার দরকার নেই?


4
নীচে একটি মন্তব্যে আপনি বলছিলেন যে রেল এপি ডক্সগুলি অনুসন্ধানযোগ্য নয়। পরিবর্তে আপনার এই সাইটটি চেষ্টা করা উচিত: apidock.com/rails । এটিতে রুবি এবং আরএসপেকও রয়েছে।
রাইগুয়ে

উত্তর:


152

সংক্ষিপ্ত উত্তরটি হ'ল রেন্ডার পদ্ধতিটি আপনি যে প্রথম আর্গুমেন্টটি প্রবেশ করেন :partial => 'foo', :locals => {blah blah blah}সেদিকে নজর দেয় you

যদি আপনি আপনার প্রথম যুক্তি হিসাবে একটি স্ট্রিংয়ে পাস করেন তবে এটি ধরে নেয় প্রথম যুক্তিটি আপনার আংশিক নাম, এবং বাকীটি আপনার স্থানীয় হিসাবে পাস করবে। যাইহোক, পরবর্তী কালে, এটি প্রকৃতপক্ষে বরাদ্দ করে :locals => your_locals_argument, যা এই ক্ষেত্রে ন্যায়বিচারের :locals => {locals hash}পরিবর্তে পুরো {locals hash}; অর্থাত্‍ আপনি শেষ না করে :locals => {:locals => {locals hash}}বরং :locals => {locals hash}

সুতরাং আমার পরামর্শটি হ'ল সর্বদা স্পষ্টভাবে মানগুলি সমস্ত সময় একইভাবে পাস করা, এবং আপনার কোনও সমস্যা হবে না। এটি শিখতে, আমি সরাসরি কোডে গিয়েছিলাম ( অ্যাকশনপ্যাক / লিব / বেস.আরবি , render()রেল 2 এ পদ্ধতি; রেল 3 পৃথক)। এটি একটি ভাল অনুশীলন।

তদ্ব্যতীত, এসও-তে "বিরক্তিকর" লোকদের নিয়ে চিন্তা করবেন না। এই কারণেই এই সাইটটি বিদ্যমান। এমনকি আমি এ থেকে কিছু শিখেছি।


5

আপনার যদি নির্দিষ্ট করতে হয়: স্থানীয়, আপনার নির্দিষ্ট করতে হবে: আংশিক বা: টেম্পলেট

<%= render :partial => "rabbits/form", :locals => {...} %>

কাজ করা উচিত


রুবি হ্যাশটিকে যেভাবে মূল্যায়ণ করে তা করতে হবে যদি আপনি সেভাবে আগ্রহী হন।
sethvargo

প্রকৃতপক্ষে এটি কাজ করে..যে আমি আমার প্রশ্নে উল্লেখ করেছি ... তবে আমি কী ভাবছি কেন? এবং এই নথি কোথায়? শুধু সোর্স দেখে? এবং, যদি এই একমাত্র উপায়টি এই রেলগুলিতে অগণিত সংক্ষিপ্তসারগুলি সম্পর্কে সন্ধান এবং বোঝার একমাত্র উপায় হয় তবে আমি ভাবছি যে উত্স থেকে কীভাবে এবং কোথায় এটি সন্ধান এবং ব্যাখ্যা করার বিষয়ে যেতে হবে। আমি কেবল "রেন্ডার" এ ক্লিক করতে পারি না এবং পরে উত্সটিতে ড্রিল করতে পারি (যাইহোক টেক্সটমেট দিয়ে নয়) বা আমি পারি?
মেল্টেমি

4
আহ! সুতরাং আপনি আসলে আগ্রহী :)। হ্যাঁ, এই জিনিসগুলি বের করার একমাত্র উপায় হ'ল ক।) আপনার মতো কুঁচকানো এবং খ।) উত্স কোডটি দেখুন। উত্সটি কীভাবে ড্রিল করা যায় সে সম্পর্কে আমার কোনও ধারণা নেই যদিও ... দুঃখিত
sethvargo

ঠিক আছে, আমি কামড় দেব ... আপনি এই ধরণের জিনিসগুলি কীভাবে সন্ধান করবেন? আপনি শুধু আপনার মাধ্যমে খনন করবেন clone https://github.com/rails/rails.git? বা এর চেয়ে ভাল উপায় আর কি? দুঃখিত, কিন্তু আমি অপেক্ষাকৃত Ror নতুন আছি এবং এখনো একটি ভাল / সহজ / সামঞ্জস্যপূর্ণ উপায় পাগল ডকুমেন্টেশন সন্ধান করার ... এমন যে খুঁজে পেলাম না IS কোনো। http://api.rubyonrails.org/নয় সহজে অনুসন্ধানযোগ্য। এবং গিট থেকে উত্সটি হয় না ... দীর্ঘশ্বাস
ফেলুন

আমি কোনও উপায়ে বিশেষজ্ঞ নই, তবে আমি অ্যাপ্টানা স্টুডিও ব্যবহার করি। এটি একই প্ল্যাটফর্মটিতে গ্রহণের মতো নির্মিত (যদি আপনি পরিচিত হন)। এটি আপনাকে "ক্লিক" করতে এবং আপনি যেমন বলেছিলেন তেমন ট্রেস করার অনুমতি দেয়। আপনি কোড-ইন অনুসন্ধানও করতে পারেন এবং এটি টার্মিনাল ইত্যাদিতেও তৈরি করেছে সতর্কতা - এটি একটি দুর্দান্ত ফাইল
sethvargo

2

সম্মানজনকভাবে বলতে গেলে, আমি কেবল এই ব্যবহারের মামলাগুলি সম্পর্কে জানি, কারণ আমি গত কয়েক বছর ধরে রেলগুলির সাথে তাল মিলিয়ে চলেছি এবং এটি করার একটি নতুন উপায়ে যুক্ত করার ঘোষণাগুলি পড়েছি read আমি প্রায়ই এটিতে নিজেই একটি ভুল করি তবে সাধারণত এটি সহজে সংশোধন করা হয়।

আপনি যদি আমাকে জিজ্ঞাসা করেন তবে এটি রিলস এপিআইয়ের সেই অংশগুলির মধ্যে একটি যা পুরোপুরিভাবে ভাবা হয়নি। এটি পুরানো আচরণের কোনওটিকে হ্রাস না করে বছরের পর বছর ধরে আরও বেশি পরিমাণে সিনট্যাকটিক চিনি জমেছে। রেন্ডার পদ্ধতিতে ডায়াবেটিস রয়েছে।

এটিকে আরও খারাপ করতে, নিয়ামক এবং দর্শনে রেন্ডার আলাদা আচরণ করে। আমি প্রথম যুক্তির বিষয়বস্তুতে এটি ফাইল, টেম্পলেট, ক্রিয়া বা আংশিক কিনা তা দেখতেও তাকান। যদি এটি স্ল্যাশ দিয়ে শুরু হয় তবে এটি কোনও ফাইল বা এর মতো কিছু।

আমি যখনই সম্ভব সংক্ষিপ্ত স্বরলিপি ব্যবহারের পক্ষে in কারণ সংক্ষিপ্ত স্বরলিপিগুলি উদ্দেশ্যটি বেশ ভালভাবে যোগাযোগ করে। এটি পড়ার সময়, এটি সাধারণত আপনি যা ভাবেন তা করে। পার্টিয়াল লিখতে সোজা এগিয়ে হয় না।


1

এখানে http://api.rubyonrails.org/classes/ActionView/Rendering.html#method-i-reender থেকে রেন্ডার পদ্ধতির উত্স :

def render(options = {}, locals = {}, &block)
  case options
  # Here is your last case
  when Hash
    if block_given?
      _render_partial(options.merge(:partial => options.delete(:layout)), &block)
    elsif options.key?(:partial)
      _render_partial(options)
    else
      template = _determine_template(options)
      lookup_context.freeze_formats(template.formats, true)
      _render_template(template, options[:layout], options)
    end
  when :update
    update_page(&block)
  else
    # here the first three cases
    _render_partial(:partial => options, :locals => locals)
  end
end

এই সাহায্য আশা করি!


এটি সাহায্য করে , ধন্যবাদ! তবে এটি আমাকে নিজের সহায়তা করতে সহায়তা করে না ... আপনি যদি আমার অর্থ কী তা যদি জানেন ...
মেল্টেমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.