Ruby on rails,单选按钮if

时间:2014-06-19 11:23:37

标签: ruby-on-rails ruby

我对红宝石有点绿,但想尝试一下,所以我想请你帮忙。我的单选按钮有问题。我成功地创建了一个单选按钮,如下所示:

<input id="user_options_true" name="user[options]" type="radio" value="true" /> 
<label class="collection_radio_buttons" for="user_options_true">Tak</label>
<input id="user_options_false" name="user[options]" type="radio" value="false" />
<label class="collection_radio_buttons" for="user_options_false">Nie</label>

但是现在我想在另一个页面上做声明,woudl的工作方式如下:if value true,写文本,如果为false,则写入不同的文本。我尝试这样做:

 <% if user[options] == true %>
 <b>Status:Ma doktora </b>
 <% if user[options] == false %>
 <b>Status:Nie ma doktora</b>

但我得到这样的错误:

F:/p15/app/views/pacjencis/show.html.erb:47: syntax error, unexpected keyword_ensure, expecting keyword_end
F:/p15/app/views/pacjencis/show.html.erb:49: syntax error, unexpected $end, expecting keyword_end

我的观点:

<%= simple_form_for(@pacjenci, html: {class: "form-horizontal"}) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.input :last_name %>
    <%= f.input :adres %>
    <%= f.input :pesel %>
    <%= f.input :telefon %>
    <%= f.input :email %>
    Czy lekarz przyjmował
    <input id="user_options_true" name="user[options]" type="radio" value="true" /> 
    <label class="collection_radio_buttons" for="user_options_true">Tak</label>
    <input id="user_options_false" name="user[options]" type="radio" value="false" />
    <label class="collection_radio_buttons" for="user_options_false">Nie</label>

  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

我的控制器:

> class PacjencisController < ApplicationController
  # GET /pacjencis
  # GET /pacjencis.json
  def index
    @pacjencis = Pacjenci.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @pacjencis }
    end
  end

  # GET /pacjencis/1
  # GET /pacjencis/1.json
  def show
    @pacjenci = Pacjenci.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @pacjenci }
    end
  end

  # GET /pacjencis/new
  # GET /pacjencis/new.json
  def new
    @pacjenci = Pacjenci.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @pacjenci }
    end
  end

  # GET /pacjencis/1/edit
  def edit
    @pacjenci = Pacjenci.find(params[:id])
  end

  # POST /pacjencis
  # POST /pacjencis.json
  def create
    @pacjenci = Pacjenci.new(params[:pacjenci])

    respond_to do |format|
      if @pacjenci.save
        format.html { redirect_to @pacjenci, notice: 'Pacjenci was successfully created.' }
        format.json { render json: @pacjenci, status: :created, location: @pacjenci }
      else
        format.html { render action: "new" }
        format.json { render json: @pacjenci.errors, status: :unprocessable_entity }
      end
      end
      end

      # PUT /pacjencis/1
       # PUT /pacjencis/1.json
       def update
        @pacjenci = Pacjenci.find(params[:id])

      respond_to do |format|
      if @pacjenci.update_attributes(params[:pacjenci])
        format.html { redirect_to @pacjenci, notice: 'Pacjenci was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @pacjenci.errors, status: :unprocessable_entity }
        end
       end
       end

     # DELETE /pacjencis/1
     # DELETE /pacjencis/1.json
    def destroy
    @pacjenci = Pacjenci.find(params[:id])
    @pacjenci.destroy

    respond_to do |format|
      format.html { redirect_to pacjencis_url }
      format.json { head :no_content }
      end
     end
     end

真的会提供帮助。谢谢。

3 个答案:

答案 0 :(得分:1)

<% if params[:user][:options] == 'true' %>
  <b>Status:Ma doktora </b>
<% else %>
  <b>Status:Nie ma doktora</b>
<% end %>

我建议使用<strong>代码而不是<b>

对于truefalse值,您通常使用<% if params[:user][:options]? %>,但由于这是一个实际的字符串值而不是布尔值,因此上述答案应该有效。

params部分是您访问表单传递的POSTGET数据的方式。

答案 1 :(得分:0)

您需要添加elsifend,如下所示:

<% if user[options] == true %>
 <b>Status:Ma doktora </b>
<% elsif user[options] == false %>
 <b>Status:Nie ma doktora</b>
<% end %>

答案 2 :(得分:0)

<b><%= params[:user][:options]? ? 'Status:Ma doktora' : 'Status:Nie ma doktora' %></b>

此解决方案使用三元运算符:请参阅How do I use the conditional operator (? :) in Ruby?