我有这样的观点(/app/views/projects/new.html.erb) 如何使用if else函数来执行此操作?
<p>
<%= f.label :payment_type, "payment_type" %>
<%= f.radio_button :payment_type, 1, checked: true %>(1)
<%= f.radio_button :payment_type, 2 %>(2)
</p>
if payment_type == 1
show these things
else(or payment_type == 2)
show these things
end
我的控制器保存此视图(/app/controllers/projects_controller.rb):
def new
@project = Project.new
end
def create
@project = Project.new(params.permit![:project])
end
我如何使用它属性
答案 0 :(得分:3)
<强>的Javascript 强>
您需要使用Javascript为您提供一些前端互动。
为了给你一些细节 - 当你运行Rails应用程序时,* rails&#34;系统的一部分将在后端运行 - 这意味着每次渲染一个&#34;视图&#34;时,您的控制器将从您的模型中提取数据,允许Rails为您创建纯HTML输出。
您遇到的问题是,当您渲染此输出时,您无法再为该调用再次调用Rails功能(查看stateless
技术如何工作 - An example of a stateless protocol is HTTP, meaning that each request message can be understood in isolation.
),这意味着您需要某种方式管理界面的前端区域。
这是通过Javascript完成的:
[Javascript]最常用作网络浏览器的一部分,其中 实现允许客户端脚本与用户交互, 控制浏览器,异步通信,并改变 显示的文档内容
-
这就是你处理它的方式:
- &#34;绑定&#34;收音机输入&#34;改变&#34;事件
- 触发更改事件时,直接在JS中执行业务逻辑
- 将更改附加到视图(DOM)
醇>
<强>滑轨强>
以下是您需要具体做的事情:
#app/assets/javascripts/application.js
$(document).on("change", 'input[type="radio"]', function(){
if($(this).val = "1") {
// something here
}else{
// something else here
};
});
#app/views/controller/your_view.html.erb
<%= f.label :payment_type, "payment_type" %>
<%= f.radio_button :payment_type, 1, checked: true %>(1)
<%= f.radio_button :payment_type, 2 %>(2)
-
<强>的Ajax 强>
除此之外 - 如果您想将基于Rails的业务逻辑返回到您的视图,您将要使用ajax
。除了说这基本上会发送一个&#34;伪请求&#34;之外,我不会对此进行太多细节处理。到你的浏览器。
以下是您的设置方式:
#config/routes.rb
resources :payments do
get :type, on: :collection #-> domain.com/payments/type
end
此自定义方法将允许您执行所需的业务逻辑:
#app/controllers/payments_controller.rb
class PaymentsController < ApplicationController
def type
type = params[:type]
if type == "1"
...
else
...
end
end
end
这将使您能够对此方法进行ajax调用:
#app/assets/javascripts/application.js
$(document).on("change", 'input[type="radio"]', function(){
$.ajax({
url: "payments/type",
data: { type: $(this).val() },
success: function(data) {
alert("Success");
}
});
});
答案 1 :(得分:1)
<% if payment_type == 1 %>
these
<% else %>
those
<% end %>