根据Rails 4中使用的视图使用不同的变量

时间:2014-06-28 01:58:32

标签: ruby-on-rails if-statement

我正在使用Mailboxer,以便用户可以回复我网站中的帖子。我的网站有两种类型的帖子模型,用户可以回复,请求和优惠。

这是我的消息控制器:

class MessagesController < ApplicationController

    # GET /message/new
    def new
        @request = Request.find(params[:request])
        @message = current_user.messages.new
        @user = @request.user
    end

    def reply
        @conversation ||= current_user.mailbox.conversations.find(params[:id])
    end

    # POST /message/create
    def create
        @user = User.find(params[:user])
        @body = params[:body]
        @subject = params[:subject]
        current_user.send_message(@user, params[:body], params[:subject])
        flash[:notice] = "Message has been sent!"
        redirect_to :conversations
    end
end

new操作中,我使用@request,但如果我回复优惠帖,我需要使用@offer变量。有没有办法可以使用if语句在@offer和@request之间进行选择,具体取决于调用new动作的视图?这是解决这个问题的最好方法吗?

1 个答案:

答案 0 :(得分:0)

这不是世界上最优雅的东西,但这样简单应该有用。

if params[:request]
  @request = Request.find(params[:request])
else
  @offer = Offer.find(params[:offer])
end