我刚开始使用rails。 我正试图在我的控制器的方法中渲染局部视图,但我用括号开始。
我的appplication_controller.rb
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
def inline_error(field, messages_bag)
if msg = messages_bag.errors.full_messages_for(field).first
msg = '<small class="error">'+msg+'</small>'
return msg.html_safe
end
end
helper_method :inline_error
#nevermind on param
def take_flash(type)
render "class/flash", :layout => false
end
helper_method :take_flash
end
我的班级/ _flash.html.rb文件:
hello
我开始了
["hello"]
有人能帮助我吗?
答案 0 :(得分:1)
实际上有两种不同的render
方法,一种是在ActionView上定义的,另一种是在ActionController上定义的 - 它们的作用略有不同。您需要的是render
视图:
def take_flash(type)
view_context.render "class/flash"
end
答案 1 :(得分:1)
我认为你混淆了助手和局部的使用。它们都用于生成视图代码段,但您不需要同时使用它们。 在您的情况下,您可以直接将您的参数传递给部分,并删除帮助程序。
您的观点:
<%= render 'flash', locals: {my_param: 'blahblah'} %>
你的_flash部分:
Hello <%= blahblah %>
或者您可以将其传递给帮助程序并删除部分。
您的观点:
<%= take_flash('blahblah') %>
你的助手方法(在助手文件中定义,而不是你的控制器):
def take_flash(my_param)
"Hello #{blahblah}"
end
两种方法都有相同的结果。