লিঙ্ক_তে ক্যোরিস্ট্রিং প্যারামিটার যুক্ত করুন


214

আমি urlHelper এ লিঙ্ক_তে ক্যোরিস্ট্রিং প্যারামিটারগুলি খুব কষ্ট করে যোগ করছি। আমার একটি সূচী দর্শন রয়েছে, উদাহরণস্বরূপ, এতে বাছাই, ফিল্টারিং এবং পৃষ্ঠাবদ্ধকরণের জন্য ইউআই উপাদান রয়েছে (উইল_পাজিনেটের মাধ্যমে)। উইল_পাজিনেট প্লাগইনটি কোয়েস্ট্রিং পরামিতিগুলির আন্তঃপৃষ্ঠা অধ্যবসাকে পরিচালনা করে।

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

সম্পাদন করা

কিছু চ্যালেঞ্জ:

  1. আমার কাছে যদি দুটি ক্যোরিস্ট্রিং প্যারামিটার, বালতি এবং বাছাই করা থাকে, অন্যটির বর্তমান মান সংরক্ষণ করার সময়, কীভাবে একটি লিঙ্ক_তে এইগুলির একটিতে একটি নির্দিষ্ট মান সেট করবেন? উদাহরণ স্বরূপ:

    <%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
  2. আমার কাছে যদি একাধিক ক্যোরিস্ট্রিং প্যারামিটার, বালতি এবং সাজানোর & পৃষ্ঠা_ আকার রয়েছে এবং আমি এর মধ্যে একটিতে মান নির্ধারণ করতে চাই, তবে বাকি প্যারামিটারগুলির নাম এবং মান অন্তর্ভুক্ত করার 'উপায় আছে'? উদাহরণ স্বরূপ:

    <%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
  3. উইল_পাজিনেট প্লাগইনটি তার পৃষ্ঠা ভেরিয়েবল এবং অন্যান্য ক্যোরিস্ট্রিং ভেরিয়েবলগুলি স্বয়ংক্রিয়ভাবে পরিচালনা করে। পৃষ্ঠার আকার পরিচালনার জন্য কোনও স্বয়ংক্রিয় ইউআই উপাদান বলে মনে হচ্ছে না। পৃষ্ঠার আকারগুলির একটি নির্বাচিত তালিকা তৈরি করার জন্য আমি কোডটি দেখেছি, তবে এর পরিবর্তে আমার কাছে এর জন্য একটি উপাদান রয়েছে (এসও এর মতো)। এই চ্যালেঞ্জের অংশটি # 2 এর সাথে সম্পর্কিত, অংশটি রেকর্ডগুলির অস্তিত্ব / অস্তিত্বের ভিত্তিতে এই UI উপাদানটি লুকিয়ে / দেখানোর সাথে সম্পর্কিত। অন্যভাবে বলেছেন, পৃষ্ঠায় রেকর্ড থাকলে আমি কেবল পৃষ্ঠা-আকারের লিঙ্কগুলি অন্তর্ভুক্ত করতে চাই। তদ্ব্যতীত, আমি লিঙ্ক_ টুতে নাম দ্বারা অন্তর্ভুক্ত না করে অন্যান্য QS ভেরিয়েবলগুলি (অর্থাত্ পৃষ্ঠা, বালতি, বাছাই) স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত করতে পছন্দ করি।



1
ঘনিষ্ঠভাবে সম্পর্কিত: stackoverflow.com/questions/2124862/...
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


341

লিঙ্ক_তে থাকা API দস্তাবেজগুলি নামযুক্ত এবং পুরানো স্টাইল উভয় রুটে ক্যোরিস্ট্রিংগুলি যুক্ত করার কয়েকটি উদাহরণ দেখায়। এই কমান্ডের সাহায্যে আপনি চান কি?

link_to অ্যাঙ্কর বা ক্যোয়ারী স্ট্রিংগুলির সাথে লিঙ্কগুলিও তৈরি করতে পারে:

link_to "Comment wall", profile_path(@profile, :anchor => "wall")
#=> <a href="https://stackoverflow.com/profiles/1#wall">Comment wall</a>

link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails"
#=> <a href="https://stackoverflow.com/searches?query=ruby+on+rails">Ruby on Rails search</a>

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux")
#=> <a href="https://stackoverflow.com/searches?foo=bar&amp;baz=quux">Nonsense search</a>

1
আপনার উত্তর আমাকে # 1: <% = লিঙ্ক_ থেকে "0", প্রোফাইল_পাথ (: বালতি => '0',: বাছাই করা => প্যারাম [: বাছাই করা])%> সমাধান করতে সহায়তা করেছে। ধন্যবাদ।
ক্রেগ

এটা ঠিক। নতুন বাক্য গঠনটি হ'ল Note <% = লিঙ্ক_ টু তৈরি করুন "নোট তৈরি করুন", নতুন_নোট_পথ (প্রেরক_আইডি: @ ইউজারআইডি)%> `
gsumk

51

আপনি যদি দ্রুত এবং নোংরা উপায় চান এবং এক্সএসএস আক্রমণ সম্পর্কে উদ্বিগ্ন না params.mergeহন তবে পূর্ববর্তী পরামিতিগুলি ব্যবহার করতে ব্যবহার করুন । যেমন

<%= link_to 'Link', params.merge({:per_page => 20}) %>

দেখুন: https://stackoverflow.com/a/4174493/445908

অন্যথায়, এই উত্তরটি পরীক্ষা করুন: প্যারামস্র্যাম এবং ক্রস সাইট স্ক্রিপ্টিং


56
এটি করবেন না, এটি আপনাকে এক্সএস আক্রমণগুলির জন্য উন্মুক্ত করে।
ড্যানিয়েল নিল

1
@ ড্যানিয়েলনিল- আপনি কি ব্যাখ্যা করতে পারবেন
ইয়ারিন

3
@ ইয়্যারিন এই প্রশ্নে খুব ভাল ব্যাখ্যা আছে ।
জেমস

5
@ ইয়্যারিন যথেচ্ছভাবে পৃষ্ঠাটিতে প্যারামিটারগুলি মুদ্রণ করেছে যা ব্যবহারকারী দ্বারা জমা দেওয়া হয়েছে (এবং প্রয়োজনীয়ভাবে পরিষ্কার করা হয়নি) কাউকে জাভাস্ক্রিপ্ট এনকোড করে এমন একটি লিঙ্কের সাহায্যে আপনার সাইটে লিঙ্ক দেওয়ার অনুমতি দেয় allows এর পরে জাভাস্ক্রিপ্ট পৃষ্ঠায় মুদ্রিত হবে এবং কার্যকরভাবে কুকিজ চুরি করে বা খারাপ কাজ করে, কার্যকর করে। পৃষ্ঠাগুলি মুদ্রিত স্টাফ পরিষ্কার করার ক্ষেত্রে রেলগুলি সাধারণত বেশ ভাল তবে দুঃখের চেয়ে নিরাপদ থাকা ভাল
পিটার নিক্সে

24

আপনি যদি বিদ্যমান প্যারামগুলি রাখতে চান এবং নিজেকে এক্সএসএস আক্রমণে প্রকাশ না করতে চান তবে আপনার অ্যাপ্লিকেশন যে প্যারামগুলি প্রেরণ করা যেতে পারে কেবল সেগুলি রেখে প্যারাম হ্যাশ পরিষ্কার করতে ভুলবেন না:

# inline
<%= link_to 'Link', params.slice(:sort).merge(per_page: 20) %>

 

আপনি যদি এটি একাধিক জায়গায় ব্যবহার করেন তবে নিয়ামকের মধ্যে প্যারামগুলি পরিষ্কার করুন:

# your_controller.rb
@params = params.slice(:sort, :per_page)

# view
<%= link_to 'Link', @params.merge(per_page: 20) %>

4

আপনি যদি কোনও ব্লকে পাস করতে চান তবে নীচের মত একটি গ্লিফিকোন বোতামের জন্য বলুন:

<%= link_to my_url, class: "stuff" do %>
  <i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>

তারপরে ক্যোরিস্ট্রিংগুলি পরম পাস করার মাধ্যমে এটি সম্পাদন করা যেতে পারে:

<%= link_to url_for(params.merge(my_params: "value")), class: "stuff" do %>
  <i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.