4 টি পূর্বের রেলগুলি, চালিত পদ্ধতিতে প্যারামিটারগুলি পাস করুন


84

আমার কাছে নিম্নলিখিত কোড রয়েছে:

class SupportsController < ApplicationController
  before_action :set_support, only: [:show, :edit, :update, :destroy]
  ....

set_supportসমস্ত 4 টি ভিউ পদ্ধতির জন্য প্রয়োগ করা পদ্ধতিতে কোনও স্ট্রিং পাস করা সম্ভব ? ভিউটিতে set_supportপ্রতিটি পদ্ধতির জন্য পৃথক স্ট্রিংটি দেওয়া সম্ভব ?

উত্তর:


161
before_action only: [:show, :edit, :update, :destroy] do
  set_support("value")
end

6
@ তিহোম এবং এই প্রতিক্রিয়াটির সংমিশ্রণ আপনি এর মতো কিছু পেতে পারেন before_action only: [:show, :edit, :update, :destroy] do |c| c.set_support(params[:action) end
জীবাণু 12

আমি এর মতো একটি স্ট্রিংয়ের পরামর্শ দিচ্ছি: আগে_অ্যাকশন {| অ্যাকশন | ক্রিয়া.আপডেট_উজার_সামগ্রী (10000)}, যেখানে আপডেট_উসার_সামগ্রী এটি এমন একটি মডেল পদ্ধতি যা
প্যারামগুলি পায়

4
এটি দীর্ঘতর পদ্ধতিগুলির সাথে ভালভাবে কাজ করে, অন্যথায় আমি নীচে কাইল ডিকোটের জমা দেওয়া উত্তরটি ব্যবহার করব।
জেকোক

52

আপনি একটি ল্যাম্বদা ব্যবহার করতে পারেন:

class SupportsController < ApplicationController
  before_action -> { set_support("value") }, 
    only: [:show, :edit, :update, :destroy]
  ...

10

একটি সংক্ষিপ্ত এবং ওয়ান-লাইনারের উত্তর (যা আমি ব্যক্তিগতভাবে কলব্যাকের পক্ষে পছন্দ করি ):

before_action except:[:index, :show] { method :param1, :param2 }

আরেকটি উদাহরণ:

after_filter only:[:destroy, :kerplode] { method2_namey_name(p1, p2) }

5

আপনি একটি ল্যাম্বডা before_actionপাসে params[:action]এবং set_supportপদ্ধতিতে পাস করতে পারেন:

class SupportsController < ApplicationController
  before_action only: [:show, :edit, :update, :destroy] {|c| c.set_support params[:action]}
  ....

তারপর PARAM পাঠানো হচ্ছে স্ট্রিং এগুলির মধ্যে একটি: 'show', 'edit', 'update'অথবা 'destroy'


4
আমি এই সিনট্যাক্সটি কাজ করার চেষ্টা করেছি, কিন্তু তা করতে পারিনি। সিনট্যাক্স কাইল আমার জন্য কাজ করেছিল।
J3RN

0

সাপোর্টস কন্ট্রোলার

class SupportsController < ApplicationController    
  before_action only: [:show, :edit, :update, :destroy] { |ctrl|
    ctrl.set_support("the_value")
  }
...

অ্যাপ্লিকেশন নিয়ন্ত্রণকারী

class ApplicationController < ActionController
  def set_support (value = "")
    p value
  end
...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.