在Rails控制器中是否有等价的jQuery $(this)?

时间:2015-06-08 19:13:17

标签: ruby-on-rails ruby

例如,有没有办法做这样的事情?

# IN CONTROLLER
if Tweet.find(params[:id])
  @tweet = this
  # instead of writing 
  # @tweet = Tweet.find(params[:id])
else
  @tweet = Tweet.new(tweet_params)
end

4 个答案:

答案 0 :(得分:6)

cmd.exe
如果找不到记录,

@tweet = Tweet.find_by(id: params[:id]) || Tweet.new(tweet_params) 将返回find_by。如果nil为零,params[:id]也将返回find_by

答案 1 :(得分:1)

不是那么多。 Dondi Michael Stroma回答的另一种方法是捕捉异常:

def show
  @tweet = Tweet.find(params[:id])
rescue ActiveRecord::RecordNotFound
  @tweet = Tweet.new(tweet_params)
end

或有点间接:

def show
  @tweet = find_or_new_tweet
end

private

def find_or_new_tweet # or whatever
  @tweet = Tweet.find(params[:id])
rescue ActiveRecord::RecordNotFound
  @tweet = Tweet.new(tweet_params)
end

答案 2 :(得分:0)

您必须将推文分配给变量:

if @tweet = Tweet.find(params[:id])
  @tweet.method
else
  @tweet = Tweet.new(tweet_params)
end

答案 3 :(得分:0)

可以是一行:

@tweet = Tweet.find_by(id: params[:id]) || Tweet.new(tweet_params)